IDA動態調試android的so文件(二)

本文是記錄自己學習IDA的一些總結與歸納,並將其體現成具體功能,便於複習與交流,有不對之處望大家包容並指出,歡迎大家留言收藏

本篇對比IDA動態調試android的so文件第一篇大體相同,但是也有不同之處,具體可以根據具體需求選擇不同的方式

環境

環境

  • 小米5 - root - android7.0
  • IDA pro 7.0
  • so包是32位
  • android運行demo並進入主界面這時候不會加載so包,點按鈕運行加載so包並執行native函數
  • 如果出現其他問題可以參考IDA常見問題
  • 附加GitHub地址下載apk

配置

  1. 複製IDA 安裝目錄下dbgsrv 文件裏面的android_server文件到 手機內存儲的 /data/local/tmp 目錄下
  2. 控制檯輸入 adb shell su 命令獲取管理員權限
  3. 控制檯輸入 setenforce 0 命令 關閉保護(每次關機後開機都要重新設置)
  4. 控制檯輸入:cd /data/local/tmp 進入android_server目錄 ,輸入:chmod 777 android_server命令獲取執行權限

開始

  1. 控制檯輸入 adb shell su 命令獲取管理員權限

  2. 輸入: ./data/local/tmp/android_server啓動android_server

  3. 新開一個命令窗口 不用獲取管理員權限

  4. 直接輸入 adb forward tcp:23946 tcp:23946 命令 端口轉發

  5. adb shell am start -D -n 包名/activity路徑 啓動應用,例如:adb shell am start -D -n com.example.androidida/com.example.androidida.MainActivity

  6. 打開IDA -> 不要選擇文件

  7. 然後選擇debugger -> Attach -> Remote ARM linux/Android debugger
    在這裏插入圖片描述

  8. hostname = 127.0.0.1 post = 23946 然後點擊debug options , 設置如下圖 , 設置完成後都點擊ok
    在這裏插入圖片描述
    在這裏插入圖片描述

  9. 這時候到選擇進程的彈框 ,選擇自己apk的進程,點ok
    在這裏插入圖片描述

  10. 出現如下圖界面,點擊開始按鈕(F9) ,如果有反調試的話,一定要先下斷點,不然一運行就崩潰了,這裏運行自己的就沒事
    在這裏插入圖片描述

  11. 打開Android Device Minitor , 查看端口,這裏是8612
    在這裏插入圖片描述

  12. 控制檯輸入:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8612 注意:我這裏是8612,自己的是多少就填多少, 輸完這時候Android Device Minitor的小瓢蟲會變成綠色,並且IDA程序會開始運行

  13. IDA一直按運行按鈕(F9) , 直到加載完 , 有以下幾點注意:之後會有彈框,有ok按ok , 有yes按yes , 由於本次app在啓動MainActivity不會加載so包,所以一直按到運行按鈕不能按

  14. 點擊IDA的菜單欄的Debugger菜單中的Debugger options項,按照如下彈框選擇(這是上面已經做過的,但是這裏還是需要重新打開一下)
    在這裏插入圖片描述

  15. 測試apk點擊按鈕進入加載so的頁面,這時候會斷自動斷點
    在這裏插入圖片描述

  16. 這裏要慢點按運行按鈕 , 每次運行查看so包是否加載了 (control + s鍵可以查看已經加載的so包)
    在這裏插入圖片描述

  17. 加載so包之後, 在general registers查看so包的函數(ctrl +F可以搜索) , 雙擊so包
    在這裏插入圖片描述

  18. 搜索自己定義的函數名稱,雙擊函數名
    在這裏插入圖片描述

  19. 雙擊函數名後,在Debug View試圖會定位到函數位置,按F2 可以給選中行下斷點,如下:
    在這裏插入圖片描述

  20. 下好斷點之後,按鈕IDA的運行按鈕(F9) , 一直到指示線條變色,說明已經斷點成功(提示: F8運行下一個斷點)
    在這裏插入圖片描述

總結

這個動態調試的第二種方案 , 並沒有結合靜態so包 ,這種方式的優點相比動態和靜態結合 , 這個方式更加快速簡單 , 缺點就是這樣調試 ,有很多功能是不能用的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章