修改so_新手向总结:IDA动态调试So的一些坑
本文為看雪論壇優秀文章
看雪論壇作者ID:nisodaisuki
目錄
- 動態調試步驟
- 復制`android_server`到設備中,并執行。
- 用`pm`確定要調試apk的包名
- 用`am`啟動被調試應用
- 設置IDA調試器
- 開始附加程序
- jdb連接
- 觸發斷點
- 調試快捷鍵
- 可能的錯誤
雖然Java層代碼包含了許多有用的信息,但是一般稍微注重安全的應用都會把核心代碼放到Native層,所以對Native層的調試就顯得尤為重要了。
動態調試步驟
使用工具:am + pm +IDA, 其中am和pm為安卓系統自帶
復制android_server到設備中,并執行。
android_server的目錄為:IDA目錄>dbgsrv>android_server
注意:android_server分版本的,使用對應的版本。//復制到設備上adb push android_server /data/local/tmp//修改權限,使之能執行chmod 777 /data/local/tmp/android_server//執行cd /data/local/tmp./android_serveradb forward tcp:23946 tcp:23946
等待附加。
用pm確定要調試apk的包名
pm(package manager)包管理工具.
列出所有的包信息:pm list packages [filter]
- pm過濾器
- -d:只顯示禁用的應用的包名
- -e:只顯示可用的應用的包名
- -s:只顯示系統應用的包名
- -3:只顯示第三方應用的包名
用am啟動被調試應用
am是activity manager的縮寫am啟動程序命令:am start -D -n com.example.testarm/.MainActivity
am start -D -n調試模式打開應用com.example.testarm要調試啟動的包名.MainActivityLunch Activity啟動后等待調試器的鏈接。
<img src="upload/attach/202005/869791_NVBFYY56EP86ZF6.jpg" style="zoom: 25%;" />
設置IDA調試器
- 用IDA打開想要調試的so庫。
- 選擇Remote ARM Linux/Android debugger。
- 設置調試選項
開始附加程序
設置主機和端口
選擇要調試的程序進行附加
彈出對話框表示全部加載完成了.
此時會顯示出PC的位置
IDA 按F9,繼續執行.
jdb連接
1
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
8700為apk運行的端口, 根據實際情況更改.確定port的方法
- 使用ddms(monitor)
注意:以前monitor為Android Studio自帶, 從2019年下半年開始的Android Studio刪除了這些工具.
提取的ddms:https://www.jianguoyun.com/p/DWps1OsQ9oe6CBjP15oD (訪問密碼:HrhFnH)
觸發斷點
same
Yes
調試快捷鍵
F2下斷點
F7單步步入
F8單步步過
F9執行到下個斷點
可能的錯誤
- 由于沒有設置參數,所以經常有下面的錯誤提示, 忽略或者隨便給個參數
- 沒有進行端口映射
adb forward tcp:23946 tcp:23946
- android_server未開啟
- 可附加的程序過少
啟動android_server的用戶權限低.用root用戶運行android_server來監聽.
- ida調試版本的so和正在運行的so不一致
- jdb連接失敗
- ida打開的so文件名要和運行apk中的so名一致. 如果不一致會導致斷點無效.
總結
以上是生活随笔為你收集整理的修改so_新手向总结:IDA动态调试So的一些坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荧光皮肤有哪些_价格适中又显白的口红有哪
- 下一篇: 外卖平台抽成怎么算 抽成变成抽血