Android逆向 动态调试smali

动态调试smali应该是每个Android逆向工程师的基本功,其原理其实就是改包为debuggable,再用debuggable启动应用,基于JDWP协议端口转发调试应用,JDB Client(被调试程序)在被调试时会启动jdwp线程通过JDWP协议与JDB Server(调试端)进行通信,JDWP协议用于传输调试的行号及局部变量等信息。

1.改包

1.1利用apktool解包apk

在这里插入图片描述
调用apktool d 包名
解包获得android 源码

1.2修改AndroidManifest.xml

添加debuggable为true,使应用可调式
在这里插入图片描述

1.3修改入口activity smali代码(可选)

在入口activity 的onCreate 函数里添加
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
这行代码表示等待调试,也可以不加,后面用命令
adb shell am start -D -n 包名/入口acitivity
启动应用也可以使应用进入调试模式
在这里插入图片描述

1.4签名应用

https://blog.csdn.net/qq951127336/article/details/88524377

1.5打开DDMS ,且安装运行应用

DDMS的位置在SDK目录下的tool目录
在这里插入图片描述
在这里插入图片描述
打开DDMS ,打开要调试的应用,可以看到下图被调试的应用有红色昆虫标志,表示debuggable状态
在这里插入图片描述

2.配置smali代码

2.1导入smali代码

修改smali目录名为src目录名

2.2Android studio打开解包目录(即src的父目录)
2.3设置src目录为root目录

右键src目录,进入Mark Directory as选项,右边有set as Root
在这里插入图片描述

2.4配置调试configure

点击run ,然后点Edit Configuration
在这里插入图片描述
配置端口号为DDMS 的端口,module为当前目录
(调试模式Attach和listen的区别,Attach是调试服务端(被调试程序运行的机器)启动一个端口等待我们(调试客户端)去连接,Listen是我们(调试客户端)监听一个端口,一般选择attach)
在这里插入图片描述

3.断点调试

3.1 添加断点

在这里插入图片描述

3.2 点击调试按钮

在这里插入图片描述
可以看到DDMS的小昆虫变绿,调试成功
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值