ELF文件分析中的重要工具

1. file

用于查看文件的简单信息

BriansdeMacBook-Pro:armeabi-v7a brian$ file libcheckcert.so 
libcheckcert.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped

2. strip

去除ELF文件中不必要的符号以及调试信息。


3. nm

查看ELF文件的符号

BriansdeMacBook-Pro:armeabi-v7a brian$ arm-linux-androideabi-nm -D libcheckcert.so 
00004fb4 T JNI_OnLoad
00015da4 T _Unwind_Backtrace
000152a0 T _Unwind_Complete
000152a4 T _Unwind_DeleteException
00015d80 T _Unwind_ForcedUnwind
00015144 T _Unwind_GetCFA
0001623c T _Unwind_GetDataRelBase
00016220 T _Unwind_GetLanguageSpecificData
00016210 T _Unwind_GetRegionStart
........


4. readelf

这个是分析ELF文件最重要的工具之一,可以查看ELF文件的头部以及各个section和segment的详细信息。


5. objdump

与readelf功能相似,不同的是它们的实现方式不同,objdump是基于BFD(Binary Format Descriptor)库的,更加通用,而readelf是专门针对ELF格式文件的。另外,readelf可以显示调试信息,而objdump不行。


6. ldd

查看ELF文件所依赖的共享库的详细信息。

$ ldd /bin/ls
        linux-gate.so.1 =>  (0xb7711000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb76e5000)
        librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb76dc000)
        libacl.so.1 => /lib/libacl.so.1 (0xb76d4000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb758d000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7589000)
        /lib/ld-linux.so.2 (0xb7712000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7570000)
        libattr.so.1 => /lib/libattr.so.1 (0xb756b000)



发布了60 篇原创文章 · 获赞 44 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/beyond702/article/details/53540950