ddms工具使用以及案例

ddms工具使用以及案例

ddms的主要用途,就是查看app的各种输出,尤其是日志的输出方法剖析

工具准备

环境配置连接:https://blog.csdn.net/tianyi19/article/details/115335951
用到的apk

链接:https://pan.baidu.com/s/1rAONbtafSYos-IKHddQw2w 
提取码:emrc

启动ddms

ddms是在sdk中的,一般情况下我们已经将platform-toolstools目录添加到环境变量
所以只需要在cmd中输入ddms即可
在这里插入图片描述
等待启动,启动完成界面如下
空空如也
在这里插入图片描述
我们来启动一个模拟器试试,看看ddms有什么变化
在这里插入图片描述

车x了去广告

先看第一个例子,现在app为了盈利,很多时候都会加入广告,但是好烦人的,怎么去掉呢?

车x了广告如下

在这里插入图片描述

查看ddms输出

模拟器上app打开,观察ddms输出
在这里插入图片描述

添加过滤器

但是你发现好多输出啊,不知道哪个是车x了的输出,怎么搞?
添加过滤器,只看车x了的输出
在这里插入图片描述
点击车x了过滤器,这样我们看到的,就只有车x了的输出了
在这里插入图片描述

发现广告

清空日志,重新打开app,观察输出
你发现了关键字,广告!!!
在这里插入图片描述
这说明啥,但是这个到底是不是车x了首页的广告呢?其实我也不知道,毕竟逆向就是这,一半是基础,一半是靠蒙

提取一下url
右击日志->filter similar messages
在这里插入图片描述
弹出框选择关键链接,因为后面的可能都是参数
在这里插入图片描述

替换广告链接

然后该怎么做呢?将所有这个链接换成127.0.0.1试一下,假装还是正常访问,不过已经失效了
换成127.0.0.1表示这还是个正常的链接,只不过是无响应而已,如果换成空字符串或者其他,可能就不是无响应,直接是大异常,app可能会直接崩溃
在这里插入图片描述
替换完成, 重新回编译
再次安装app,然后运行,观察ddms,发现无法读取url,失效了!
并且app也没广告了
在这里插入图片描述

好x小说插桩和栈跟踪

什么是插桩

插桩本质就是Java的输出日志,
但是我们都知道,向jadx-gui等反编译工具,虽然可以将apk逆向成Java代码
但是那都是伪Java代码,是根据smail翻译过来的,并且伪Java代码是不能修改的
但是smail是可以修改的
所以插桩就是用smial来完成log输出,来验证自己的猜想知否正确

开始插桩

必须使用上述链接配置的AK(Android Killer)和jadx-gui

apk拖入AK中,找到入口函数,也就是onCreate方法
在这里插入图片描述
.prologue代码之后,进行插桩
如果是安装上述链接配置的AK,右击会有插入代码->Log信息输出
插入位置图如图所示
在这里插入图片描述
其实就是这两行,调用了Log而已
在这里插入图片描述
插桩内容尽量只能是英文或者中文转unicode码,可以利用AK快速完成转换在这里插入图片描述
回编译在jadx中看看Java代码,插桩其实就是log而已
在这里插入图片描述
保存,回编译,安装到模拟器
在ddms中添加一个过滤器,就可以看到自己插入的日志了
在这里插入图片描述

可能出现的问题

插桩是会失败的
比如,寄存器位0个
在这里插入图片描述
如果.locals为0,把.locals改为1即可,或者更多

方法栈跟踪

栈跟踪和插桩类似,插桩的本质是log,栈跟踪的本质就是报异常
都知道,不管是什么语言,报异常的时候,都会有引发一系列提示,最终定位到某一个自己代码触发的异常
所以栈跟踪理论来说可以更好的理清逻辑

插入栈跟踪

在入口函数插入栈跟踪,不过这次不是在onCreate,在loadData函数下插入
在这里插入图片描述
本质就是这几行代码,触发异常
在这里插入图片描述
回编译一下,在jadx中看一下
在这里插入图片描述
如果栈跟踪能触发,那就说明执行流程应该是onCreate()->loadData()->栈跟踪信息

真的是这样子吗?
ddms中看一下吧
Tag为System.err的就是栈信息,如果没有,可能需要卸载重装
在这里插入图片描述
确实如此,不过逻辑是从下往上看的,跟jadx图调用关系一样

方法剖析

还是好x小说这个app,我们打开登录这个页面
在我的里面
在这里插入图片描述
我点击了这个立即登录,究竟触发了哪些方法呢?
在这里插入图片描述
注意:玩方法剖析手要快!,因为打印的东西太多
在这里插入图片描述
点击ok后,去模拟器点击登录
在这里插入图片描述
然后还是去点击刚才那个按钮在这里插入图片描述
然后等一会会自动弹出一个东西,如图所示
在这里插入图片描述
可以发现就那一会,就有2800个方法,所以一定快
在这里插入图片描述
还是上述的操作,再来一遍,发现有132个,所以操作一定要快
在这里插入图片描述
ps:子节点(Children)就是将要去调用的节点

点击登录触发的是onclick方法,搜索一下
在这里插入图片描述
一般也是从下往上找

根据分析,点击立即登录按钮,应该触发的是这个类的onClick
在这里插入图片描述
但是到底点击登录触发的是不是这个类呢?
在jadx中找一下这个类
在这里插入图片描述
在AK中这个位置插桩
在这里插入图片描述
回编译app,在ddms中看一下,通过插桩来验证一下逻辑是否正确
在这里插入图片描述
点击立即登录按钮,触发日志,可以确定,位置没找错

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值