Apk_動態偵錯方案

2023-03-15 06:00:45

環境準備

如圖使用官方版本的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的真機偵錯做相同的前置準備即可完成!

其餘步驟與用模擬器相同。