Chapter8——动态调试Android程序

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程序

时间: 2024-10-20 18:54:11

Chapter8——动态调试Android程序的相关文章

真机在wifi下调试android程序

大家好,最近在学习android程序由于手机接口问题,调试程序的时候老是接触不良而不能正常调试,因此感到相当苦恼,于是在网上查找无线调试android的方法.经过研究和尝试现已成功无线调试程序,方法分享如下: 1. 手机是否具备条件 1)手机一定要root才可以哦,如果没有root请不要往下走. 2)手机和开发电脑在同一局域网内. 2. 手机上安装调试必备软件 1)在手机软件市场找到AdbWireless软件并安装. 2)安装之后如下图: 3)点击开启开关如下图: 3. 电脑上连接手机 1)在c

使用visual studio 调试android 程序 ,真机调试

1 使用visual studio 2015 新建 blank android APP , 2 安卓手机调整到开发者模式 3 通过USB链接到PC 4 自动检测 设备(这一步貌似没有立即检测到真机设备,打开两分钟真机设备才出来), 5 选择你的设备 调试正式开始,之后VS会自动部署你的hello world app 到你真机设备 并自动启动

Eclipse开发工具的使用之-使用Eclipse的Debug调试Android程序

1.设置断点,双击Eclipse编辑界面的边界,或者右击编辑界面的边界,快捷键Ctrl+Shift+B. 2.F11键开始调试程序,程序安装到手机之后,并不会自动运行,需要你手动运行到断点处. 3.运行到断点处,程序停止.接下来你可以通过快捷键来逐步运行程序. F5单步调试进入函数内部.     F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的.     F7由函数内部返回到调用处.     F8一直执行到下一个断点.     F11 这个好像是重新运行d

通过wifi调试Android程序

原文:http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/14/2106492.html 1.首先让android手机监听指定的端口: 这一步需要使用shell,因此手机上要有终端模拟器,不过网上很多,随便找个就行了,依次敲入下列几行: 1 2 3 4 su//获取root权限 setprop service.adb.tcp.port 5555//设置监听的端口,端口可以自定义,如5554,5555是默认的 stop adbd//

eclipse 远程wifi调试android程序

[原文]http://leanote.com/blog/view/541f8b2dbda4e44f75000000 下载wifidebug http://pan.baidu.com/s/1i3stnFZ 开放root权限 打开wifidebug eclipse adt 与手机同一个网段 5.开发andorid程序

安卓程序动态调试方法

一.使用DDMS 1.将程序使用apktool转化为smali代码,在关键代码左右注入log代码(的smali形式,如输出寄存器v0的值),之后重新打包apk,再执行时可以从 logcat 中看到输出. 2.栈跟踪法:如,在关键代码左右插入new Exception("print trace").printStackTrace();的smali代码形式,之后重新打包签名,再次运行可以在logcat窗口中得到栈跟踪信息. 3.method profiling: 可以用ddms中的meth

使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)

以往调试Android程序,一般使用Android SDK的adb命令的logcat进行命令行输出,体验比较的差. 网上搜索一般叫用DDMS,可是打开DDMS.bat批处理,会提示使用monitor.bat. 1. 在Android-SDK/tools打开Monitor.bat 2. 我是在logcat标签页那儿,新建一个过滤器,过滤指定App Name的日志输出 然后在右下角就可以看日志了~

IDA 调试 Android 方法及简单的脱壳实现

IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) Android(5) 学习(9) 逆向(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文参考了一些网络文章,对大大们的技术分享表示感谢.小弟刚刚开始深入去搞Android的逆向不久,写一下学习笔记,希望能抛砖引玉,给新手同学们带来方便.文笔比较烂,这不重要,重要的是按自

在Eclipse中开发Android程序时截屏的方法

在Eclipse中调试Android程序时,有时需要将程序截图保存到电脑中.步骤如下: Window --- Show View --- Other : 在弹出的窗口中,选择 Devices : 在打开的Device选项卡中,选择要截图的设备或模拟器,然后点击旁边的截图按钮: 在弹出的窗口中,点击 Save 按钮,将程序截图保存到指定的目录中即可.