1.ファイル
ファイルを表示するための簡単な情報
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.ストリップ
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
........
これは、ELFファイルを分析するための最も重要なツールの1つであり、ELFファイルのヘッダーと、各セクションおよびセグメントに関する詳細情報を表示できます。
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)