码迷,mamicode.com
首页 > 移动开发 > 详细

Chapter8——动态调试Android程序

时间:2014-07-18 20:02:52      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:android   style   java   文件   io   代码   

DDMS  

DDMS(Dalvik Debug Monitor Server)就是动态调试的一个工具(不知Android L之后会不会改名--!)。DDMS提供文件浏览、Logcat、Method Profiling等功能。

 

定位关键代码

1.代码注入法

用Apktool反编译得到smali,查找onClick(),比如要找程序注册码,仔细阅读之后发现比对注册码与用户输入的函数

invoke-virtual {v1, v0},Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

move=result v3

if-eqz v3, :cond_2

那么加入Log.v()来输出v0寄存器:

const-string v3, "SN"

invoke-static {v3, v0},Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

然后用Apktool打包、签名,

用"adb logcat -s SN:v"输出SN。

 

2.栈追踪法

代码注入配合Logcat好用但是需要阅读大量反汇编代码来找「输出点」。

栈追踪法也属于注入的范畴。

比如要找一个Toast是啥时候被调用的,不用阅读太多反汇编代码,而是定位到Toast,然后在这一段之后加入

new Exception("print trace").printStackTrace();

对应smali在书上就不写了。

然后打包签名运行,

在CMD输入"adb logcat -s System.err:V *W"

会以堆栈的方式,先输出java.lang.Exception print trace

然后输出从程序启动到printStackTrace()执行期间所有被调用过的方法。

Chapter8——动态调试Android程序,布布扣,bubuko.com

Chapter8——动态调试Android程序

标签:android   style   java   文件   io   代码   

原文地址:http://www.cnblogs.com/larrylawrence/p/3850708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!