IDA 對 so 的動態調試


將IDAPro根目錄下dbgsrv 目錄下的android_server(模擬器用android_x86_server,這里還是用真機好點)文件push 到安卓設備(比如/data/local/tmp/目錄)下,權限改為777,並運行

端口轉發adb forward tcp:23946 tcp:23946

安卓設備安裝並運行程序

IDA打開對應設備的so文件(arm, armv7, x86什么的)的Debugger -> Selecte Debugger -> Remote ARM Linux/Android Debugger -> OK, Debugger -> Process options -> HostName改成127.0.0.1,端口改成上面對應的 -> OK,Debugger -> Attach to process,從列表中選出對應的進程(沒有root權限的機器好像顯示不出來)

在對應代碼行下斷點,F9運行即可進行動態調試,右邊的寄存器面板可以直接修改寄存器的值

其他一些需要注意的:

  • init_array先於JNI_OnLoad會在so加載的時候就開始執行
  • 導出表沒有的函數有可能是在通過JNI_OnLoad動態注冊的, 查找動態注冊的方法是打開segment視圖, .data.rel.ro.local段中放置的即為動態注冊的函數(從上往下分別是函數名, 函數簽名, 函數地址)


免責聲明!

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



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