反編譯以及打包 apk
- 工具網(wǎng)盤地址
- 反編譯 :java -jar Apktool.jar d 22.apk
- 修改 smail 或者 Manifest.xml | 在動(dòng)態(tài)調(diào)試時(shí)需要使用
- 打包 : java -jar Apktool.jar b 22 -o 22.apk | 22 是反編譯產(chǎn)生的文件夾
- 簽名 : java -jar signapk.jar testkey.x509.pem testkey.pk8 22.apk signed.apk | *.pem 和 *.pk8 是 密鑰文件
生成密鑰
openssl genrsa -out tmpkey.pem 4096
openssl req -new -ke tmpkey.pem -out tmprequest.pem
openssl x509 -req -days 9999 -in tmprequest.pem -signkey tmpkey.pem -out mykey.pem
openssl pkcs8 -topk8 -outform DER -in tmpkey.pem -informPEM -out mykey.pk8 -nocrypt
rm tmp*.pem
smail 動(dòng)態(tài)調(diào)試
- 前提 :
-
- 系統(tǒng)屬性 ro.debugable 為 1
- 使用 Android AVD 生成的模擬器默認(rèn)情況下 ro.debuggable 屬性為 1
- 使用谷歌安卓源碼庫AOSP編譯出來的鏡像默認(rèn)情況下 ro.debuggable 屬性也為 1
- 查看方式 :
- 運(yùn)行 "abd shell getprop ro.debuggable"
- 使用 setpropex 修改系統(tǒng)屬性
- git clone https://github.com/jduck/rootadb.git
- cd rootadb
- ndk-build
- # found setpropex in libs /*/
- 在手機(jī)上執(zhí)行
- ./serpropex-pie ro.debuggable 1
- 直接修改內(nèi)存中的系統(tǒng)屬性,不會(huì)寫回文件,重啟會(huì)還原
- apk 的 AndroidManifest.xml 文件開啟了調(diào)試 (android:debugable="true")
-
- 操作
- jeb 打開 apk 文件
- 打開 bytecode ,找到需要的位置在 smail代碼 中下斷點(diǎn)
(快捷鍵 crtl + b)
- 打開 bytecode ,找到需要的位置在 smail代碼 中下斷點(diǎn)
- 將 apk 安裝在adb連接上的手機(jī)或者模擬器中 , 并打開應(yīng)用
-
- Debugger -> start , 打開選擇框
- 4.2 選擇對(duì)應(yīng)的機(jī)器和 進(jìn)程(flags 帶 d 標(biāo)志,這是當(dāng)前代碼對(duì)應(yīng)的進(jìn)程,也可以通過進(jìn)程名進(jìn)行搜索)
- 如果沒有看到進(jìn)程,嘗試拖動(dòng)來擴(kuò)展進(jìn)程欄,進(jìn)程欄可以自由拖動(dòng)擴(kuò)展...
- attach
- attach 之后通過操作來觸發(fā)斷點(diǎn)即可
- 觸發(fā)斷點(diǎn)后可以通過 vm/locals 查看本地變量的變化 | 這些變量默認(rèn)是 int 類型,如果沒有根據(jù)代碼變化, 對(duì)類型輸入一點(diǎn)其他字符后按enter ,會(huì)自動(dòng)修改成對(duì)應(yīng)的類型
ndk 動(dòng)態(tài)調(diào)試
ida pro 版
- 分析點(diǎn):
- 交叉引用
- JNI_onload , init_array
- 環(huán)境:
- root 的手機(jī)或者模擬器
- ida pro
- 對(duì)應(yīng)手機(jī)或者模擬器架構(gòu)的 android_server
- 操作步驟
- adb push android_server /data/local/tmp
-
- adb shell
- 2.1 cd data/local/tmp
- 2.2 chmod 777 android_server # 此處是需要 root 權(quán)限的點(diǎn)
-
2.3 ./android_server # 此處 android_server 開在本機(jī)(手機(jī)或者模擬器)的 23946 端口
image.png
- adb forward tcp:23946 tcp:23946 # 將 手機(jī)的 23946 端口轉(zhuǎn)發(fā)到本機(jī)(電腦)的 23946 端口
- 打開 ida # 不打開任何項(xiàng)目
- debugger -> attach -> remote *** gdb # 選擇對(duì)應(yīng)架構(gòu)的 gdb
- 設(shè)置連接的 gdb

image.png
- 選擇對(duì)應(yīng)的進(jìn)程

image.png
- #后續(xù)操作等拿到測試機(jī)再補(bǔ)充
