2011-12-20 6 views
2

나는 안드로이드 커널을 gzip 헤더에서 분리하여 압축을 풀었습니다. 그러나 내가 파일을 덤프하기 위해 android ndk에서 objdump를 시도하면 파일 형식이 인식되지 않는 오류가 발생합니다.안드로이드 커널에 objdump

누구나 이진 이미지에서 기호 테이블을 얻는 방법을 알고 있습니다.

내 안드로이드 장치에 나는 기호 표를 얻기 위해 다음을 수행 할 수 고양이/proc 디렉토리/

답변

3

이것은 Android에서만 고유하지 않습니다. 대부분의 (모든?) Linux 시스템에서 발생합니다. (안드로이드 기반이되는)는 리눅스 커널의 부팅 이미지는 적절한 ELF 바이너리 아니다 :

부팅 이미지는 압축 용기에 vmlinux kernel ELF binary 배치 부팅 및 압축 해제 유틸리티 세트를 추가함으로써 생성된다
# file /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
/boot/vmlinuz-2.6.38.7-desktop-1mnb2: Linux kernel x86 boot executable bzImage, version 2.6.38.7-desktop-1mnb2 ([email protected]) #1 SMP Sun, RO-rootFS, root_dev 0x902, swap_dev 0x3, Normal VGA 
# nm /boot/vmlinuz-2.6.38.7-desktop-1mnb2 
nm: /boot/vmlinuz-2.6.38.7-desktop-1mnb2: File format not recognized 

. 디버깅을 위해 커널 이미지가 필요한 경우. vmlinux 파일이 필요합니다 - 나는 그것이/어디서 안드로이드 NDK에 있는지 알고 있습니다.

1

nm를 사용해보십시오 kallsyms.

$ nm path/to/someobj 
+0

'nm'와'objcopy' 둘 다'binutils'의'libbfd'를 백엔드로 사용합니다. 결과는 같을거야 ... – thkala