Android庫分析工具(崩潰反編譯)


[時間:2016-07] [狀態:Open]
[關鍵詞:android, 動態庫,靜態庫, 編譯,crash,addr2line]

本文主要整理Android編譯系統中可用的庫分析工作,可作為后續代碼崩潰分析的參考。

  1. 動態庫(*.so)處理:
    arm-linux-androideabi-readelf.exe -a XX.so > xx.txt

輸出所有導出函數
arm-linux-androideabi-objdump.exe -dx XX.so > xx.txt
反匯編so包,此時使用 $(JNI_PROJ_PATH)\obj\local\armeabi下面帶符號表的so包。JNI_PROJ_PATH為編譯so包時jni文件夾的根目錄。

  1. 靜態庫(*.a)處理:
    輸出.a內所有導出函數。方法一:
    arm-linux-androideabi-ar.exe -t xx.a > xx.txt
    方法二:
    arm-linux-androideabi-nm.exe xx.a > xx.txt

  2. ndk編譯
    上面兩種庫文件,.a和.so都可以直接通過arm-linux-androideabi-g++.exe工具編譯,編譯語法跟linux上的g++一致。 也可以直接使用ndk-build命令。

  3. crash定位

使用addr2line將地址轉化成代碼行數,輸入的so為帶符號表的,即為strip過的:

arm-linux-androideabi-addr2line.exe -f -e \jni\obj\local\armeabi\libXX.so 00002683

使用ndk-stack.exe還原堆棧:

ndk-stack -sym E:\dev_code\Sosomap-old\Sosomap-jni\obj\local\armeabi -dump D:\android-ndk-r9b-windows-x86\txmap_log.txt

-sym為帶符號表的so路徑, -dump為crash的堆棧信息,必須包含:********************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM