由於二進制中的函數是被粉碎過的,假如我要獲取libart.so中的OpenMemory函數(這個看源碼),我們可以這樣找。
nm -a '/home/haidragon/Desktop/android-5.1.1_r1/out/target/product/hammerhead/obj/lib/libart.so' | grep "OpenMemory"
然後找對應的那個OpenMemory(因爲有函數重載)
c++filt _ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_7OatFileEPS9_
用dlsym獲取就行了。