安卓Hacking Part 6:调试Android应用
上一期中,我们介绍了如何用JDB调试Java应用,本期中我们将来学习如何用JDB来调试Android应用,如果某个Android应用是可以被调试的,我们就能在该应用的进程中注入并运行我们自己的代码。
背景介绍
未使本文更加有意思,我开发了一个简单的演示应用,只有一个按钮和一个输入框。
下载:
http://yunpan.cn/cf3RVN5fRRC73 (提取码:8734)
运行截图如下:
点击按钮,应用提示”Try Again”。现在我们的目标就是在不修改程序的情况下,把提示结果改成”Hacked”。为此,我们需要在程序运行是来改变提示的内容。
用到的工具
模拟器
adb - Android调试桥
jdb - Java调试器
为了简单点,我会使用Android Tamer,其中包含了所以上面提到的工具
相关主题:
u检查漏洞
u相关设置
u运行时代码注入
好了,开始。
漏洞检查
这是本文最简单的部分
1、使用APKTOOL反编译AndroidManifest.xml文件,命令如下
#apktool d <vulnerableapp>.apk
2、检查AndroidManifest.xml文件是否有如下内容:
Android:debuggable=”true”
如果你在其中发现了这样的内容,就所以该应用是可以被调试的。
提示: 我们只用到了APKTOOL来检查应用是否可调试,但我们没有修改应用的代码。
设置准备:
这一步中,我们会为在进程中注入代码做一些准备。上一期中说了,我们会用远程调试的方法。
1、启动模拟器
2、安装测试应用
3、打开终端,输入以下命令,查看Dalvik虚拟机监听在模拟器的哪一个端口。
#adb jdwp
这条命令会显示所有可以连接并调试的端口,如下图:
提示:JDWP就是 Java Debug Wire Protocol(Java调试线协议),如果一个应用可被调试,该应用的虚拟机会打开一个唯一端口以便JDB连接调试。Android的Dalvik虚拟机也支持该协议。
4、现在打开我们刚安装的测试应用,再使用同样命令查看我们的应用监听的端口,如图:
我们比较两次命令执行的结果,发现运行测试应用后多出了赢543端口,这就是我们测试应用对应的端口,我们需要用JDB去连接该端口。
5、在连接之前,我们需要使用adb来转发端口:
6、现在就可以用JDB连接调试android应用了.
远程代码注入
我们将用在应用运行时修改其行为的方式来实现。
为此,我们需要设置断点来控制程序的执行流程。但我们并不知道该应用所使用的类和方法。使用一下命令来查看类和方法。
查看类的命令 “classes”
由于打印出的类太多,这里只列出了少数类,但你继续向下滚动你就会发现用户自定义的类。
现在我们用以下命令查看 MainActivity$1类中的方法。
“methods com.example.debug.MainActivity$1”
在MainActivity$1.onClick方法中设置断点
“stop in com.example.debug.MainActivity$1.onClick(android.view.View)”
为了触发这个断点,我们需要手动点击下应用的按钮,如下图,点击后断点被触发:
在此我们就能用various 命令查看变量和参数的等命令一些敏感信息。
为了解相关细节,onClick方法的代码如下:
使用”locals”命令查看局部变量:
局部变量中没有什么我们需要的信息。
使用”next”命令执行下一行代码:
再使用”locals”命令查看本地变量,看上一行代码干了些什么:
如上图,TextView已经被加载被赋值给了tv参数,对应代码中与TextView的代码已经被执行。
“next”执行下一行,并检查局部变量:
上图中列出了所以的局部变量,其中secret的字符串变量看上去毕竟可疑,其值”Try Again”就是之前我们点击按钮后显示的信息。
之前的源代码中看到,setText方法被用来设置值”Try Again”。使用”step”命令进入”setText”方法动态修改显示的值。
使用”locals”命令查看该方法中的局部变量:
使用”set”命令将”text”变量的值从”Try Again”改为”Hacked”。
我们并不能在程序中看到任何变化,因为我们还没有执行。
下面使用”run命令”执行:
模拟器运行结果如下:
可以看到,我们已经成功修改了应用运行的输出,这只是一使用JDB修改应用运行行为的示例。我们也能执行其它的操作,比如“Getting a shell”
总结
本文中,我们示范了如何攻击一个可以被调试的应用,在实际的产品的测试中,渗透测试者也应该注意被测试应用是否可以被调试。
安卓Hacking Part 6:调试Android应用相关推荐
- android 代码打开usb调试,Android手机USB调试在哪?安卓手机如何打开USB调试模式?...
Android手机USB调试在哪?安卓手机如何打开USB调试模式?如果我们要将安卓手机连接到电脑上,从而传输文件.下载应用或ROOT等,都需要打开手机的USB调试模式.安卓系统的版本有很多,它们的打开 ...
- android usb调试工具,USB调试怎么打开 各版本安卓手机打开USB调试模式方法
手机与电脑通常是通过Adb方式连接,所以需要您在设备上打开USB调试模式,不同版本的安卓系统,打开USB调试模式也有所不同,以下我们根据安卓系统版本而不同,介绍下各版本安卓手机打开USB调试模式的方法 ...
- IDA远程调试Android
IDA远程调试Android ADB 连接安卓设备.(不会ADB参考:http://www.cnblogs.com/ONDragon/p/6841787.html) 把IDA文件夹中dbgsrv目录下 ...
- 在Mac上使用android studio调试android手机
一.环境准备 1.安卓手机:Android版本为9 2.MacBook Pro 3.安卓数据线 二.adb介绍 1.adb概念 adb:全称是Android Debug Bridge,意思是Andro ...
- 你想跨互联网远程调试Android设备吗,推荐一个远程控制手机的免费软件
以前,常常碰到这样的烦恼问题:我们开发的App应用,明明自己测试好好的,部署到用户的安卓设备上之后,总是遇到种种奇怪而又不好找到原因的问题.虽然说Android系统硬件差异大,各个厂商的设备系统实现细 ...
- android allow usb debugging,远程调试Android设备 - Chrome 开发者工具中文文档
在Windows,Mac 或 Linux 上远程调试 Android 设备上的实时内容. TL;DR 设置你的Android设备进行远程调试,并从开发机中发现它. 从您的开发机器检查和调试Androi ...
- 如何通过Chrome远程调试Android上的Web页面
这里写自定义目录标题 准备工作 手机端打开USB调试模式 Chrome远程调试Android手机 准备工作 安卓手机(打开USB调试模式,USB链接电脑) PC端打开chrome浏览器 手机端打开US ...
- ffmpeg android 编译选项,技术共享|安卓系统的完美转身 Android FFmpeg 编译和使用
原标题:技术共享|安卓系统的完美转身 Android FFmpeg 编译和使用 2017年,智能手机修罗场,国产手机华为.OPPO.vivo.小米等纷纷出大招,跻身全球销量前10名单,华为推出荣耀旗舰 ...
- unity-真机调试Android
title: unity-真机调试Android categories: Unity3d tags: [unity, Android, 调试, profile] date: 2017-01-11 10 ...
最新文章
- SQL server 实例教程
- OpsRamp推出以服务为中心的AIOps和云监控功能
- SAP报表的性能优化SAP报表的性能优化
- linux应用程序接收文件,Linux应用程序学习之文件编程
- -bash: xxx: command not found
- C++学习之路 | PTA乙级—— 1006 换个格式输出整数 (15分)(精简)
- web mysql 界面表命名规范_MySql数据库表字段命名及设计规范
- mysql数据库单用户_SQLServer数据库之SqlServer数据库单用户模式无法删除的处理
- 字符串16进制之间相互转换(转载)
- springcloud官方文档_springcloud-microservice 快速构建分布式系统
- 分享2个第三方社会化分享按钮及分享工具
- nginx: [error] invalid PID number问题处理
- python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用
- MyBatis源码阅读(三) --- 配置信息的解析以及SqlSessionFactory构建过程
- 【CarMaker学习笔记】行人穿过人行道、横穿马路观察自动驾驶车辆避让实验
- 如何从 ArcView 3.3 版本的工程迁移到 ArcGIS Desktop 10 ?
- 《摄影测量学》空间后方交会详细解读
- 基金指数温度怎么算_基金指数温度靠谱吗【指数温度查询技巧】
- 编译错误:invalid types ‘int[int]‘ for array subscrip-markdown编辑器
- 无刷新假象 实现简易文件上传
热门文章
- 视频处理工具安利,要制作视频的快来
- 快手如何提升播放量;快速热门涨粉。丨国仁网络资讯
- 可可英语奇文老师 全方位搞定英语词汇听说读写,无压力听懂电台看懂原著!奇文(免费下载)
- 设计模式の建造者模式
- Newton 3 for Mac(AE牛顿动力学插件)
- linux根目录下各文件夹的作用
- 程序中说的挂起是什么意思
- android正在升级正在优化应用程序,为何我的手机开机显示Android正在升级应用程序以优化1...个,共26个。完了后就是正在打开...
- kylin4.0.1安装与填坑
- 手把手教你使用Python打造绚丽的词云图