20210321-学习随笔

 

20210321

使用apktool反编译对程序进行调试

  1. 对apk进行反编译(异常报错,暂未成功)

    apktool d -d xx.apk -o xxdir
    # 参考官网apktool用法https://ibotpeaches.github.io/Apktool/install/
    

    xx.apk:需要反编译的目标apk

    xxdir:存放反编译结果的目标目录

    能反编译的最高apktool版本为apktool_2.0.3.jar

    SmaliDebugging has been removed in 2.1.0 onward.

  2. 修改AndroidManifest.xmlapplication节点,添加android:debuggable="true"属性

  3. 在入口点类的onCreate方法中添加invoke-static{},Landroid/os/Debug;->waitForDebugger()V

  4. 对apk进行回编译

    apktool b -d xxdir -o new.apk
    
  5. 对apk文件进行签名

    java -jar signakp.jar xx.pem xx.pk8
    
  6. AndroidStudio导入编译后的文件目录,下断点

  7. 设置远程调试Run -> Debug Congigurations -> Remote Java Application Host:localhost:8700

使用AndroidKiller反编译配合AndroidStudio对程序进行调试

  1. AndroidStudio安装smalidea(设置高亮及断点)

    在Settings中

  2. 使用AndroidKiller对apk进行反编译

  3. 【工程管理器】->【项目名】->【右键->打开方式->打开文件路径】

  4. 复制【文件路径\Project】到AndroidStudio打开【Open an Existing Project】

  5. Configure Framework,默认OK

  6. AS添加远程调试

    1. 菜单栏->Run->Edit Configurations
    2. 点【+】,添加【Remote】,修改端口localhost:8700
  7. adb启动调试apk(需先安装调试apk

    adb shell am start -D -n {package}/{name}
    # AndroidManifest.xml
    # {package}:<manifest>节点 package属性
    # {name}:主<activity>节点 android:name属性
    
  8. 打开Android Device Monitor,点击模拟器下的{package}来设置端口

    • AS4.0版本已经没有快捷按钮,路径:sdk\tools\monitor.bat

    • 如果模拟器下无对应包,重启adb服务,并重新进行第【7】步

      adb kill-server
      adb start-server
      
  9. AS在smali下 行号前双击 设置断点,点击调试按钮进行调试

tips

  • AndroidKiller中smali文件修改
    • 可直接注释跳转修改apk运行流程
    • 可 右键->插入代码,插入log方便调试
posted @ 2021-03-23 19:11  Forgo7ten  阅读(92)  评论(0)    收藏  举报