android 動(dòng)態(tài)調(diào)試

反編譯以及打包 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)試

  • 前提 :
      1. 系統(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)屬性
      • 在手機(jī)上執(zhí)行
        • ./serpropex-pie ro.debuggable 1
      • 直接修改內(nèi)存中的系統(tǒng)屬性,不會(huì)寫回文件,重啟會(huì)還原
      1. apk 的 AndroidManifest.xml 文件開啟了調(diào)試 (android:debugable="true")
  • 操作
      1. jeb 打開 apk 文件
      1. 打開 bytecode ,找到需要的位置在 smail代碼 中下斷點(diǎn)
        (快捷鍵 crtl + b)
      1. 將 apk 安裝在adb連接上的手機(jī)或者模擬器中 , 并打開應(yīng)用
      1. 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
      1. attach 之后通過操作來觸發(fā)斷點(diǎn)即可
      1. 觸發(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
  • 操作步驟
      1. adb push android_server /data/local/tmp
      1. 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
      1. adb forward tcp:23946 tcp:23946 # 將 手機(jī)的 23946 端口轉(zhuǎn)發(fā)到本機(jī)(電腦)的 23946 端口
      1. 打開 ida # 不打開任何項(xiàng)目
      1. debugger -> attach -> remote *** gdb # 選擇對(duì)應(yīng)架構(gòu)的 gdb
      1. 設(shè)置連接的 gdb
image.png
    1. 選擇對(duì)應(yīng)的進(jìn)程
image.png
  • #后續(xù)操作等拿到測試機(jī)再補(bǔ)充
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容