天天看點

Android逆向工具Android逆向

Android逆向

Android逆向工具思維導圖下載下傳

環境配置

1、寫在前面

  • java
    • smali
  • c++
    • arm

2、Android開發環境

  • JDK1.8
    • JAVA_HOME
      • JDK安裝路徑
    • CLASSPATH
      • .;%JAVA_HOME/lib/dt.jar;%JAVA_HOME/lib/tools.jar
    • PATH
      • %JAVA_HOME/bin;%JAVA_HOME/jre/bin
  • Android Studio
    • SDK
      • PATH
        • AndroidSDK\platform;AndroidSDK\tools
    • NDK
      • Android Studio下載下傳

3、安卓模拟器

4、一台調試手機

  • Google親兒子
  • 或者root手機

反編譯

Smali

  • 字段資訊(.—>/)

Android Killer

  • java----->classes.dex
  • res------>
    • res
    • resources.arsc
  • AndroidManifest.xml
    • AndroidManifest.xml

調試方法

  • (老方法:修改源程式)
    • 工具:
      • Apktool
        • java -jar apktool d -d #.apk -o dir
          • d(反編譯)
          • b(回編譯)
          • -d(使用debug模式)
          • -o(輸出檔案夾)
      • ShakaApktoo
        • java -jar shakaapktool.jar d -df #.apk -o dir
          • d(反編譯)
          • b(回編譯)
          • -df(使用架構資源檔案)解決api版本問題
          • -o(輸出檔案夾)
    • Android.mainfest檔案application标簽中插入
      • android:debuggable=“true”
    • 在入口點的類中onCreate方法中添加
      • invoke-static{},Landroid/os/Debug=>waitForDebugger()V
    • 反編譯修改過的apk檔案
      • java -jar apktool.jar b -d dir -o #.apk
        • b(會回編譯)
    • 手動對apk檔案進行簽名
      • java -jar signapk.jar testkey.x509.pem testkey.pk8 未簽名apk 生成簽名apk
    • adb install #.apk
    • 導入apk代碼
      • 1、Android打開反編譯後的檔案夾
      • 2、找到入口onCreate函數設定斷點(invoke-static{},Landroid/os/Debug=>waitForDebugger()V)下一行設定
      • 3、開啟遠端調試(run–>edit–>±->Remote(遠端)–>localhost,8700)
      • 4、tools–>Android–>Android Device Monitor(SDK/tools/monitor.bat)
    • 注意:
      • Android Killer配置自動代碼輔助
  • (新方法)
    • 反編譯
      • Android Killer
      • apktool
      • apktool
      • jadx
      • 解壓單個dex2
    • Android Studio/IDEA打開反編譯檔案夾
    • 配置遠端調試模式
      • Remote(local,8700)
      • Monitor
    • 使用adb以debug方式啟動apk
      • adb install #.apk
      • adb shell am start -D -n packageName/ActivityName
        • packageName:
          • AndroidManifest.xml
        • ActivityName:
          • AndroidManifest.xml(android:name)
    • 下好斷點
    • 對關注的寄存器添加watch
  • 注意:
    • smali檔案修改:
      • 1、跳轉修改
      • 2、添加log
      • 3、手動修改調用類中的方法

Android Monitor

AndroidSDK中提供的一款全面監控Android系統應用,功能非常強大,無論是做開發還是做破解都是無法離開這款工具的

Monitor日志過濾(老版本)

Android Studio日志過濾(新版本)

JD-GUI

把smali自動變換位java代碼的工具,免費的,并且反編譯結果較為準确,友善平時檢視用,對于一些小型apk軟體很好用

JEB

一個大型的smail代碼反編譯工具,需要購買,價格較貴,相對來說功能比較強大,反編譯結果相對于上面那個的來說要更加準确,當然,對主機要求較高

基本操作:

  • 1、重名名
  • 2、跟蹤
  • 3、傳回

1、插件幫助檔案

  • jeb/doc/apidoc

2、插件編寫

  • 語言
    • java
    • python

去除應用廣告

1、抓包

  • Charls
  • Fiddler

Android dx工具

AndroidSDK/build-tools/version/dx.bat

dx --dex --output=輸出dex路徑 jar檔案路徑

dx --dex --output=/dir/#.dex /dir/#.jar