Android的smali动态调试方法

鉴于网上大多转载的smali动态调试方法,都是来源一个模板,而且有一些不必要的繁琐冗余过程,我在这里简化了一下。

准备工具:

apktool
eclipse

调试步骤:
1.对apk使用apktool反编译出可调试的smali代码到testout文件夹

apktoold d -d test.apk -o testout

注意-d参数是生成可调试代码

2,在AndroidManifest.xml中,设置application为可调试:

android:debuggable="true"

3,找到Lancher入口

4,在入口类的OnCreate方法中,在第一句前插入

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

记得添加a=0; 让这句话生效。

以上2-4步也可以用shell命令:am start -D -n 包名/类名
进入调试等待

5,重新打包,记得仍然用-d参数

apktoold b -d testout -o debug.apk

6, 重签名

7,安装apk,并启动,此时程序触发调试点

8,打开eclipse,导入smali工程
1) File -> New -> Project -> Java Project -> Next
2) Project Name随便起,Use default location选项去掉,Location选择out文件夹,然后Next
3) 把smali文件夹设为Source Folder,然后Finish

9,下断点

10,打开DDMS,查看待调试程序的端口,8600

11, 回到eclipse,配置远程调试
1). 菜单Run -> Debug -> Debug Configurations
2). 双击Remote Java Application,Host处默认localhost就行,Port填第10步得到的8600,然后Apply -> Debug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值