androidstudio动态调试smali

参考:http://blog.csdn.net/jiangwei0910410003/article/details/51456735

总体思路:apktool反编译APK修改为可调试并加入断点,apktool回编译APK并signapk加签名,安装,以调试状态打开app,端口转发

baksmali反编译APK得到源代码,用androidstudio打开并设置sourceroot和远程调试端口设置,打好断点就可以开始调试。

一、配置插件

下载插件smalidea

地址: https://bitbucket.org/JesusFreke/smali/downloads

下载smalidea-0.03.zip

下载完成后,打开Android studio的Settings | Plugins,选择 Install plugin from disk

这里写图片描述

二、反编译apk,修改AndroidManifest.xml中的debug属性并在oncreate()打好断点

java -jar apktool_2.0.0rc4.jar d -d AliCraceme_1.apk -o out
  • 1
  • 1

修改AndroidManifest.xml中的android:debuggable=”true”

这里写图片描述

找到入口Activity之后,我们直接在他的onCreate方法的第一行加上waitForDebugger代码即可,找到对应的MainActivity的smali源码:

然后添加一行代码:

invoke-static {}, Landroid/os/Debug;->waitForDebugger()V

这个是smali语法的,其实对应的Java代码就是:android.os.Debug.waitForDebugger();

androidstudio动态调试smali_第1张图片


修改完成之后,回编译apk并且进行签名安装

java -jar apktool_2.0.0rc4.jar b -d out -o debug.apk
  • 1
  • 1

然后对APK重新进行签名

java -jar .\sign\signapk.jar .\sign\testkey.x509.pem .\sign\testkey.pk8 debug.apk debug.sig.apk

签名之后就可以进行安装了

安装上面重新签名得到的apk应用

apk install AliCrackme_1.apk

创建目录Smali/src,并且使用baksmali反编译输出到该目录下

创建目录SmaliDebug/src

java -jar baksmali-2.0.8.jar AliCrackme_1.apk -o SmaliDebug/src

3、使用Android Studio导入该目录SmaliDebug

这里写图片描述

4、选择Create project from existing sources,之后一直选择next

这里写图片描述

5、成功导入工程后右键点击 src 目录,设定Mark Directory As->Sources Root

这里写图片描述

6、配置远程调试的选项,选择Run–>Edit Configurations:

这里写图片描述

这里写图片描述

7、增加一个Remote调试的调试选项,端口选择:8700

这里写图片描述

8、设置端口号

这里写图片描述

9、选择File–>Project Structure 配置JDK

这里写图片描述

10、以调试状态启动app

adb shell am start -D -n com.example.simpleencryption/.MainActivity
如果不用 ddms 可以通过adb shell执行 ps | grep kugou命令查看转发端口:

然后进行端口转发:
adb forward tcp:8700 jdwp:24551
记住这时候需要将DDMS关掉,不然会出现错误
  • 1
  • 1

11、下好断点之后Run->Debug

这里写图片描述

12、调试程序


你可能感兴趣的:(android学习)