android studio动态调试apk最详细教程

Posted NarClo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android studio动态调试apk最详细教程相关的知识,希望对你有一定的参考价值。

前提条件

  1. 首先要懂的smali得语法,知道在哪里下断点,代码逻辑,调试的位置定位很重要,不用太精通,但是最起码的知识点要知道
  2. 你所调试的apk是否可以支持反编译后二次签名,有一些apk包是做了签名效验的,需要破解之后才能打包,有些是加了壳的,根据实际情况去处理你所调试的apk包,这里不仔细说明怎么破解签名效验和脱壳操作。
  3. 需要准备安卓模拟器或者手机(无需ROOT),adb能够正常链接手机
  4. 需要android studio (建议下载最新版本)

开始配置环境

  1. android studio需要安装插件:1,Smalidea 2,Smali Support

1,Smalidea安装,网上很多都是v0.05版本的,由于我的android studio比较新,所以v0.5版本会导致无法正常下断点。所以建议安装v0.06版本

下载地址:smalidea-0.06
安装步骤:
打开setting>Plugins

右上角的齿轮 选择 Install Plugin from Disk
然后选择下载好的smalidea-0.06安装即可
2,Smali Support安装
可以直接在Plugins的Marketplace搜索Smali Support就可以直接安装

至此安装的东西已经就绪完毕了。

3,通过android studio 打开apk包

android studio 起始页面打开 profile or Debug APK
选择你要调试apk包

把Android改为Project

养成好习惯,把反编译出来的smali改为源码文件目录
smali文件右键>Make Directory as > Sources Root


4,Smali下断点
选择你要在smali源码里面下载断点了 根据自身情况下载断点

5,修改反编译的apk包改为调试模式

反编译工具很多,可以通过android killer或者apktool2.6都可以,根据自己习惯
(安装android killer需要配置java环境变量,这里不说明,网上大把资料自己可以搜索下 java安装环境配置 就行了)
这里我用android killer。
1,使用android killer打开apk包

2,反编译成功之后修改 AndroidManifest.xml文件 在Application 中添加

android:debuggable=“true”


点击保存后从新编译apk包 安装到手机或者模拟器上

到这里需要调试的apk包已经准备好了,下面就是准备调试

6,配置android studio调试器

打开Edit Configurations

点击左上角加号>选择Remote JVM Debug


Name:自己随便写
port:这个可以选择默认的 可以根据自己选择端口号
其他的不用修改 然后点击apply再点OK
然后选择刚刚创建的调试器

再打开Terminal

然后在手机上打开你刚刚编译修改的apk包运行起来,
通过shell查看包的pid进程

adb shell ps | grep 包名

包名在android killer可以查看

我这里包名:com.leeyou.td16489493

adb shell ps | grep com.leeyou.td16489493

会显示一下信息

记住这个pid 7751 等会儿要用到
然后输入

adb forward tcp:5005 jdwp:7751
tcp:端口是在第六步设置调试器设置端口 默认5005
jdwp:换成你apk包的pid


然后选择Attach Debugger to Android Process

然后选择apk包名 点击OK

如果出现Connected to the tarfet VM…说明已经连接成功了!

剩下的就是在代码段下断点进行调试了


运行手机的apk或者模拟器的apk调试器会自动在你下的断点停留然后出现参数值

教程到此结束。供大家参考。

以上是关于android studio动态调试apk最详细教程的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 最新最详细安装教程

使用Android Studio调试系统应用之TvSettings:再次编译,生成APK文件

Android Studio 卡在“正在安装 APK”上

Android Studio APK打包(签名)

Android调试系列—使用android studio调试smali代码

Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)