1.查找动态库so所依赖的其他库:
objdump -x libtest.so | grep NEED
结果例如:
NEEDED libc.so
NEEDED libdl.so
即,需要libc和libdl两个so。
2.也可以用ndk中的:
android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld libtest.so来察看更详细的so信息
3.察看so中的函数符号:
readelf -s libtest.so | grep Init
4.也可以用ndk中的:
android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf -d libtest.so
5.察看so的文件信息:
file libtest.so
结果:
libtest.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
not stripped意味着这个so可以Debug,可以反编译。
又如:
file libjni_test.so
libjni_test.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped
这个libjni_test.so 就不能反编译了。