準備工具:
1. IDA Pro v6.6 以上
2. Android 模擬器 CPU armeabi-v7a (可使用Android Studio內建的)
一、Android Native Debugger環境設置
一、Android Native Debugger環境設置
- 從路徑C:\Program Files\IDA 7.0\dbgsrv 獲取android_server (這是CPU armeabi-v7a 的環境所使用的)
- 開啟Android模擬器後再Android裡面創建資料夾 - adb shell mkdir /data/tmp
- 將android_server移至Android裡面 - adb push android_server /data/tmp
- 讓android_server有執行的權限 - adb shell chmod 777 /data/tmp/android_server
- 執行android_server – adb shell、cd /data/tmp/、./android_server
- 設定port forward (讓電腦端的IDA Pro 能和Android端的android_server通訊) - adb forward tcp:23946 tcp:23946
- 開啟IDA Pro 後,將 .so (由於Android Studio 在編譯時會有很多版本要確認是armeabi-v7a)檔案拖曳到IDA Pro視窗裡面
- 在IDA Pro 上面的工具列選擇Debugger -> Select Debugger -> Remote ARM Linux/Android debugger
- 設置Remote Debugger的連線,Debugger ->Process options,在Hostname填入localhost
- 讓APP等待Debugger - adb shell am start -D -S -W com.example.jschen.myapplication/.MainActivity (Package/Activity)
- Debugger APP – 在IDA Pro 工具列選擇Debugger -> Attach to process,然後再尋找要Debugger的APP
- Debugger warning – 會跳出一些警告,都是詢問 .so檔是否與Android裡的 .so 是否一樣,都選擇Same就可以了
- 設定中斷點,讓APP觸發時,就會直接斷下
- 在IDA Pro按下F9快捷鍵運行程式
- 查詢APP的PID (Process ID) – adb shell ps
- 設定Debugger Port - adb forward tcp:1234 jdwp:4918
- Attach APP – jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=1234
這時就能成功的中斷到Native的初始化程式碼了
順便修改記憶體 (由於R1會指到Hello……的字串),將它改成Hacker