android动态调试

android动态调试

ID:14213895

大小:639.04 KB

页数:8页

时间:2018-07-26

android动态调试_第1页
android动态调试_第2页
android动态调试_第3页
android动态调试_第4页
android动态调试_第5页
资源描述:

《android动态调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、上一期中,我们介绍了如何用JDB调试Java应用,本期中我们将来学习如何用JDB来调试Android应用,如果某个Android应用是可以被调试的,我们就能在该应用的进程中注入并运行我们自己的代码。背景介绍未使本文更加有意思,我开发了一个简单的演示应用,只有一个按钮和一个输入框。下载:http://yunpan.cn/cf3RVN5fRRC73 (提取码:8734)运行截图如下:点击按钮,应用提示”TryAgain”。现在我们的目标就是在不修改程序的情况下,把提示结果改成”Hacked”。为此,我们需要在程序运行是来改变提示的内容。用到的工具l模拟器ladb -Android调试桥ljdb

2、 -Java调试器为了简单点,我会使用AndroidTamer,其中包含了所以上面提到的工具相关主题:u检查漏洞u相关设置u运行时代码注入好了,开始。漏洞检查这是本文最简单的部分1、使用APKTOOL反编译AndroidManifest.xml文件,命令如下#apktoold.apk2、检查AndroidManifest.xml文件是否有如下内容:Android:debuggable=”true”如果你在其中发现了这样的内容,就所以该应用是可以被调试的。提示: 我们只用到了APKTOOL来检查应用是否可调试,但我们没有修改应用的代码。设置准备:这一步中,我们会

3、为在进程中注入代码做一些准备。上一期中说了,我们会用远程调试的方法。1、启动模拟器2、安装测试应用3、打开终端,输入以下命令,查看Dalvik虚拟机监听在模拟器的哪一个端口。#adbjdwp这条命令会显示所有可以连接并调试的端口,如下图:提示:JDWP就是JavaDebugWireProtocol(Java调试线协议),如果一个应用可被调试,该应用的虚拟机会打开一个唯一端口以便JDB连接调试。Android的Dalvik虚拟机也支持该协议。4、现在打开我们刚安装的测试应用,再使用同样命令查看我们的应用监听的端口,如图:我们比较两次命令执行的结果,发现运行测试应用后多出了赢543端口,这就是

4、我们测试应用对应的端口,我们需要用JDB去连接该端口。5、在连接之前,我们需要使用adb来转发端口:6、现在就可以用JDB连接调试android应用了.远程代码注入我们将用在应用运行时修改其行为的方式来实现。为此,我们需要设置断点来控制程序的执行流程。但我们并不知道该应用所使用的类和方法。使用一下命令来查看类和方法。查看类的命令“classes”由于打印出的类太多,这里只列出了少数类,但你继续向下滚动你就会发现用户自定义的类。现在我们用以下命令查看MainActivity$1类中的方法。“methodscom.example.debug.MainActivity$1”在MainActivi

5、ty$1.onClick方法中设置断点“stopincom.example.debug.MainActivity$1.onClick(android.view.View)”为了触发这个断点,我们需要手动点击下应用的按钮,如下图,点击后断点被触发:在此我们就能用various命令查看变量和参数的等命令一些敏感信息。为了解相关细节,onClick方法的代码如下:使用”locals”命令查看局部变量:局部变量中没有什么我们需要的信息。使用”next”命令执行下一行代码:再使用”locals”命令查看本地变量,看上一行代码干了些什么:如上图,TextView已经被加载被赋值给了tv参数,对应代码中

6、与TextView的代码已经被执行。“next”执行下一行,并检查局部变量:上图中列出了所以的局部变量,其中secret的字符串变量看上去毕竟可疑,其值”TryAgain”就是之前我们点击按钮后显示的信息。之前的源代码中看到,setText方法被用来设置值”TryAgain”。使用”step”命令进入”setText”方法动态修改显示的值。使用”locals”命令查看该方法中的局部变量:使用”set”命令将”text”变量的值从”TryAgain”改为”Hacked”。我们并不能在程序中看到任何变化,因为我们还没有执行。下面使用”run命令”执行:模拟器运行结果如下:可以看到,我们已经成功

7、修改了应用运行的输出,这只是一使用JDB修改应用运行行为的示例。我们也能执行其它的操作,比如“Gettingashell”总结本文中,我们示范了如何攻击一个可以被调试的应用,在实际的产品的测试中,渗透测试者也应该注意被测试应用是否可以被调试。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。