Linux/Kernel Analysis

    git-proxy 설정

    방화벽 때문에 git을 사용하지 못할 때가 있다.그럴 경우 아래 방법을 사용하여보자. 1) corkscrew 다운받기http://www.agroman.net/corkscrew/ 에 접속하여 corkscrew를 다운받는다. $ tar zxvf corkscrew-2.0.tar.gz $ cd corkscrew-2.0 $ ./configure $ make 새로만든 폴더에 복사한다.! $ cp corkscrew ~/bin 2) git-proxy 생성$ vi ~/bin/git-proxy #!/bin/sh exec /home/bro/bin/corkscrew $* 3) git proxy 설정$ git config --global core.gitproxy '/home/bro/bin/git-proxy' $ chmod +x..

    램디스크 ( Ram disk )

    커널 이미지와 함께 반드시 제작해야 하는 바로 Ram Disk 이미지(이하 램디스크 이미지)입니다. 램디스크는 별다른 물리적 장치를 지칭하는 것이 아니라, RAM 영역의 일부분을 디스크처럼 사용하는 것입니다. 이러한 램디스크 이미지는 부팅시 램디스크를 루트(/)로 이용할 경우, 커널에 의해 압축된 램디스크 이미지 파일이 풀리면서 램에 로딩되고 시스템 구동에 필요한 init, busybox, tinylogin 및 유틸리티와 환경파일 등이 최상위 디렉토리(/)에 배치하게 됩니다. 이렇게 타겟보드에 필요한 파일들을 모아서 이미지 파일로 작성한 것이 바로 램디스크 이미지입니다. RAM은 전원이 꺼지면 기억된 내용이 지워지므로 플래시 메모리 영역에 램디스크 이미지를 저장한 후 부팅 때 마다 풀어서 사용하게 됩니다.

    gdb 어셈블리어 변경

    gdb를 사용해 분석을 하는 경우가 요새 많은데 gdb는 최초 AT&T로 어셈이 설정되어 있어서 불편하다. 그래서 자료도 많고, 내가 자주보면 intel 방식으로 바꾸고 싶다. 그때 설정하는 명령어 set disassembly-flavor intel : intel 방식으로 변경 set disassembly-flavor at : AT&T 방식으로 변경

    파일 접근 권한

    S_ISUID 04000 실행을 위한 사용자 ID설정. S_ISGID 02000 실행을 위한 그룹 ID설정. S_ISVTX 01000 스티키 비트. S_IRUSR (S_IREAD) 04000 읽기. S_IWUSR (S_IWRITE) 02000 쓰기. S_IXUSR (S_IEXEC) 00100 실행/찾기 S_IRGRP 00040 그룹에 의한 읽기 S_IWGRP 00020 그룹에 의한 쓰기. S_IXGRP 00010 그룹에 의한 실행/찾기. S_IROTH 00004 다른사람이 읽기 00004 read by others S_IWOTH 00002 다른사람이 쓰기 S_IXOTH 00001 다른사람이 실행/찾기.

    커널 모듈 에서 쉘 명령어 실행하기

    argv[0] = "/bin/bash"; argv[1] = "-c"; argv[2] = "/usr/bin/free"; argv[3] = NULL; envp[0] = "HOME=/"; envp[1] = "TERM=linux"; envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin"; envp[3] = NULL; call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);

    커널에서 64비트 연산시 주의할 점

    커널모듈에서는 64bit 숫자를 나누기나 모듈러 연산시 그냥 컴파일 하면 아마도 __udivdi3 와 __umoddi3 에 대해 unresolved symbol 에러가 날 것임. 그냥 / 연산자 쓰지말고것 do_div 연산자를 쓰자. 다만. do_div(a, b) 의 의미가 a = a / b 이기 때문에 입력값a 에 결과값이 들어있다는 것을 기억해주자. #include 해줄것[출처] 커넒모듈에서 나누기나 모듈러 연산시|작성자 baksejin