2014-04-14 1 views

답변

0
  1. 파일 시스템의 루트에서 시작하십시오.
  2. opendir() readdir() closedir()을 사용하여 디렉토리를 검색하십시오. 각 항목에 대해
  3. : -> d_type
    1. 은 (구조체에 dirent *)를 통해 하위 디렉토리 항목을 감지, 자신의 파일 * "마법"으로 ELF 파일을 검색.
  4. 하위 디렉토리가 발견되면 위의 2로 재귀하십시오.

* ELF 파일 마법 (파일 0 오프셋) :

7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 
+0

비교를 위해 표시 한 ELF 문자열을 생성하는 개체 또는 실행 파일 중 하나에서'file'을 실행 하시겠습니까 64 비트 Intel (x86_64) ELF에서 생성 된 문자열을 사용합니다. 처음 4 바이트는 매직 넘버입니다; 첫 번째 16 비트의 나머지 12 바이트는 32 비트와 64 비트, LSB와 MSB (엔디 언), 버전, 타입 등을 인코딩합니다. 32 비트 (01) MSB (빅 엔디안) 버전 1 (01), SYSV (00). 다른 정보는 헤더의 뒷 부분에 있습니다. –

3

당신이 표준 find 프로그램을 사용할 수없는 경우, 다음 통과하는 POSIX nftw() 기능 (또는 아마도 ftw() 기능)를 사용 계층 구조를 작성하고 적절한 방문자 기능을 작성하십시오. ELF 파일의

첫 번째 4 바이트는 다음과 같습니다 무엇 다음 것은 플랫폼 및 버전 별이

0x7F 0x45 0x4C 0x46 
DEL E L F 

입니다.

, file 리포트 :

ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped 

및 헥스의 처음 16 바이트의 출력은 :

0x0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............ 

이것은 후에 그의 answerMahonri Moriancumer으로 나타내는 출력 약간 다르다 처음 4 바이트.

+0

감사합니다. ftw()가 매우 적합합니다. – ttworkhard

관련 문제