環境準備
-
安裝夜神安卓模擬器
-
配置好adb【Android 除錯橋】環境(這裡需要使用官方的adb環境,設定好環境變數)Android 除錯橋 (adb) | Android 開發者 | Android Developers (google.cn)
-
置換夜神模擬器路徑下的adb.exe,使環境版本適配。【這一步儘量也配置好】
如圖使用官方版本的adb.exe和兩個.dll檔案 ,覆蓋【替換】夜神模擬器目錄下的相同檔案!同時將nox_adb.exe 也換成官方版本的adb.exe檔案,但是命名必須還是nox_adb.exe。
ida .so動調
使用模擬器
adb devices # 檢視埠
adb.exe connect 127.0.0.1:62001
adb push F:\CTF_\ctf_tool\Re_tool\ida_pro\IDA_7.7_chinese\dbgsrv\android_x86_server /data/local/tmp
(IDA的dbgsrv目錄下有很多版本,我嘗試了這個版本出錯,發現還有一個版本叫android_x86_server,可以成功執行) /data/local/tmp/android_server(這個目錄其實可以隨便放,有的反除錯會檢測)
adb shell
cd /data/local/tmp
chmod 777 android_x86_server
./android_x86_server
# 再開一個終端,進行埠轉發
adb forward tcp:23946 tcp:23946
# 一些相關命令
# 檢視埠
netstat -ano | findstr "5037"
# 殺死程式
taskkill -f -pid 8377
adb kill-server
在關閉adb服務後,要使用如下的命令啟動adb服務。
adb start-server
注意:這裡.so檔案的架構型別,要與ida進行遠端除錯的檔案適配。
做好準備工作後,ida 載入.so檔案,並設定好斷點。然後用模擬器將要除錯的apk程式執行起來,接下來使用ida 附加apk程式,開始動態除錯。
完成.so檔案的動態除錯!
jeb 動調
使用模擬器
使用安卓修改器,在AndroidManifest.xml裡修改或新增可除錯許可權
android:debuggable="true" # AndroidKiller 等工具完成
入口除錯【模擬器要處於開發者模式,並且開啟USB除錯】
# 安裝除錯應用
adb install app-release.apk
nox_adb devices # 檢視埠
nox_adb.exe connect 127.0.0.1:62001
adb shell
# am start -n 包(package)名/包名.活動(activity)名稱
am start -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity
# 啟動命令
adb shell am start -d -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity
模擬器執行後附加:
or
上面的步驟也可以略過!直接模擬器啟動apk程式,然後附加。
使用真機
把xxx.apk(待動調程式)安裝到安卓手機上,安裝後開啟APP。
【同樣需要使用開發者模式,並開啟USB除錯,還有手機要是root許可權】
(非root 許可權似乎也能調,自行嘗試)
提示:
手機裡面開啟設定,對著安卓版本狂點幾次,即可開啟“開發者模式”,
然後在開發者模式裡面開啟“USB除錯”。
然後使用資料線把手機和電腦連線起來,當彈出“是否允許電腦除錯手機”之類的提示時選擇允許。
最後手機開啟xxx.apk,並使用JEB開始除錯。
jadx 動調
使用模擬器
要動調的xxx.apk程式,在模擬器中執行起來。
jadx直接動態除錯即可。
然後雙擊apk程式。
成功動態除錯!!!
使用真機
jadx的真機除錯和jeb的真機除錯做相同的前置準備即可完成!
其餘步驟與用模擬器相同。