Android逆向-动态调试smali代码

使用AndroidStudio可以动态调试Smali代码,需要用到一个插件smalidea-0.05.zip
smalidea-0.05.zip

1.安装插件

image.png
image.png

2.将smali代码所在的目录导入AndroidStudio中,并在入口类中下断点

image.png
image.png
image.png

3.安装apk

Adb install xxx.apk
以调试方式启动apk
adb shell am start -D -n com.bufish.org/.LogoActivity
image.png

4.在AndroidMonitor中现在调试进程,设置调试端口为8700

image.png
image.png
image.png

5.在AndroidStudio增加一个新的调试配置

修改调试配置中的连接端囗为8700,以及修改调试配置的名称
image.png

6.使用工具栏中的debug按钮,进行连接调试。

image.png
image.png
调试过程中,可以查看寄存器的值
image.png

Android逆向-动态附加调试smali代码

前提条件:
①apk中的清单文件中application标签中有debug属性
android:debuggable=”true”
或者整个android系统是debug版本

②关闭Android Monitor
调试步骤:
首先运行一下apk,然后调试方式启动apk
adb shell am start-D-n com.bluelesson.apkcrackme/.MainActivity
在AndroidStudio中直接附加进程
image.png

附加分析cake.apk

image.png

image.png

image.png

image.png

两种调试方式注意:

方式一:

1.androidkiller 反编译apk,生成smali代码AndroidKiller v1.3.1\projects\fkby\Project
2.使用android studio导入反编译生成的project如果没有安装smalidea插件,需要先安装一下,安装完之后重启
3.开monior
4.开模拟器
5.以调试方式启动apk(先安装apk)
adb shell am start-D-n com.bufish.org/.LogoActivity
6.在monitor中找到调试进程,选择进程,设置通用调试端口8700
7.在android studio设置断点,创建调试配置,设置调试端口
默认是8700,如果连不上,连接monitor中进程显示的端口
8.点击android studio中的调试按钮,连接调试
常见问题:
1.模拟器无法在monitor中正常显示进程列表
关掉模拟器,结束掉adb进程,重启模拟器
2.调试连接端口无法连接8700
换进程的另一个端口

方式二:

前提条件:程序要有debug属性或者系统是debug系统
1.androidkiller反编译apk,生成smali代码
2.使用android studio导入反编译生成的project如果没有安装smalidea插件,需要先安装一下,安装完之后重启
3.开模拟器
4.以调试方式启动apk(先安装apk)
5.点击android studio中的附加调试按钮,连接调试