Android Studio 动态调试apk

时间:2021-7-21 作者:qvyue

一、什么是动态调试

其实是动态调试 Smail文件 ,一种逆向分析的方式,通过 jdwp 调试相关进程。
一般在做竞品分析时会用到类似的手段。Android studio支持apk分析,所以操作起来还是比较简单的。

二、前期准备

2.1 使apk可调试

正常情况下release包是不允许调试的,所以必须先让apk可调试,一般有两种方法:

  1. 使用 apktool 工具反编译apk,修改 AndroidManifest.xml 文件,然后再重签名二次打包:
  
  
  1. 直接在root或者模拟器上运行

运行后,在 Logcat 中可以找到对应进程即可。

Android Studio 动态调试apk
可调式.png

2.2 下载smalidea插件

Android Studio 中 Smali Support 插件不支持 smali 断点,所以需要重新下载一个插件,具体操作可以参考:解决新版Android Studio 4.0+无法断点调试smali问题

2.3 Android Studio 支持导入apk

启动 Android Studio 或者 点击File 是否有 Profile or Debug APK 这个选项:

Android Studio 动态调试apk
导入apk.png
Android Studio 动态调试apk
导入apk2.png

如果没有找到,应该是 Android APK Support 这个插件没有启用,Settings中启用该插件即可。

Android Studio 动态调试apk
在这里插入图片描述

三、动态调试smali文件

3.1 调试模式启动app

运行下面命令,启动app:

adb shell am start -D -n 包名/.你要调试的界面
例如:
adb shell am start -D -n com.francis.testxpose/.MainActivity

查看进程号:

adb shell ps | findstr 包名
例如:
adb shell ps | findstr com.francis.testxpose

Android Studio 动态调试apk
获取进程号.png

3.2 端口映射

使用 jdwp 转发端口:

adb forward tcp:调试端口号 jdwp:进程号
例如:
adb forward tcp:8900 jdwp:12618

3.3 创建remote调试

  • 使用 Profile or Debug APK 选项导入apk:

    Android Studio 动态调试apk
    导入apk3.png
  • 创建 remote 调试模式

    Android Studio 动态调试apk
    创建remote1.png
Android Studio 动态调试apk
创建remote2.png
Android Studio 动态调试apk
创建remote3.png

3.4 下断点

找到你想调试的代码下断点。

Android Studio 动态调试apk
下断点.png

3.5 启动调试

Android Studio 动态调试apk
断点.png
Android Studio 动态调试apk
启动调试.png
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。