前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android逆向|AndroidStudio的两种动态调试技巧

Android逆向|AndroidStudio的两种动态调试技巧

作者头像
辞令
发布2021-09-14 15:12:05
2.6K0
发布2021-09-14 15:12:05
举报
文章被收录于专栏:WhITECat安全团队WhITECat安全团队

本篇是《Android逆向入门教程》的第六章第10节,具体课程详情可点击下方图片查看:

每一章节详细内容及实验材料可通过加入底部免费的【Android逆向成长计划】星球获得!

声明:所有实验含部分虚构,纯属技术练习,未对真实环境造成任何影响。也请勿将相关技术用于非法操作,否则责任自负。

0x01 简介

在上两篇的文章中,我们通过jeb实现了静态分析以及动态调试,而本篇文章则是教会大家使用另外一个工具来进行动态调试,这个工具就是AndroidStudio。使用此工具调试的优势在于无需修改寄存器的值类型即可查看对应具体的值,而在jeb中有时修改寄存器值的类型之后,忘记将类型修改回去而继续调试导致程序崩溃。本次的实验app依然是上一次提及的注册机app。

0x01 普通模式调试

1.下载并安装AndroidStudio工具和smalidea插件(百度均可下载)。

2.安装smalidea

打开AndroidStudio工具,点击File,选择Settings,点击Plugin,再点击installplugin from disk。找到之前我们下载的smalidea插件选中点击OK,插件就添加成功了,会弹出弹窗,提示重启AndroidStudio,点击重启。

3.反编译待调试的apk

通过apktool工具反编译apk获取smali文件(也可以通过AndoridKiller反编译的整个项目导入AndroidStudio中),修改Androidmanfest.xml中android:debuggable="true"。需要注意的是,我们前几篇文章并未提及修改Androidmanfest.xml中android:debuggable属性值是因为在雷电模拟器中底层已经开启调试模式,在真机中调试的时候我们需要刷机使其始终开启调试模式,或者每次调试app的时候检查Androidmanfest.xml中android:debuggable属性值,使其为true。

详细操作步骤截图如下:

4.调试环境配置

在AndroidStudio工程中右键点击smali文件夹,设定MarkDirectory as -> Sources Root。

打开AndroidStudio的File-> Project Structure选择,选择对应的JDK。

配置远程调试的选项,选择Run–>EditConfigurations选项,点击“+”号,新建remote类型调试器,设置Name,修改端口号,可以选择未被占用的任意端口,这里设置为8700

然后打开smali的MainActivity,定位到checkSN方法,在方法的开始处下断点(左键点击)

5.打开雷电模拟器并启动注册机app,然后在cmd命令框输入命令“adbshell ps”查看启动app的进程pid。

然后执行命令“adbforward tcp:8700jdwp:3267”进行端口转发,其中的“tcp”是之前配置调试环境时指定的端口号,“jdwp”这里指的是我们要调试的程序的进程pid。这里是将本地端口(PC端口)映射到远程端口(手机端口),之后PC端访问8700端口的数据包,会自动转发到手机的3267端口。

之后打开AndroidStudio, 在菜单中找到“debug”调试按钮,点击该按钮开始调试,出现下面的“socket”信息,这就说明附加成功了。

然后我们在模拟器中输入用户名和任意16位注册码。点击注册按钮,发现程序被断下来了,出现了参数寄存器的值。

然后介绍调试的几个按钮

根据上一篇文章分析我们也知道,注册码的值是存储在v6寄存器中,因此我们在那里下断点,然后运行到此就可以获取到正确的注册码。有朋友可能会疑问为什么这里显示的是具体参数名的值而不是v6的值,这是因为AndroidStudio动态调试的时候自动将v6寄存器的参数名识别出来并且显示,这也是AndroidStudio相较于jeb的优势所在,到此我们也就完成的AS的普通模式调试,他的调试流程相较于jeb复杂,但是熟练起来也是非常好用的一款工具。

0x02 调试模式调试

AndroidStudio的调试模式调试的使用方式不同依然在于启动。我们通过命令“adbshell am start -D -n 应用程序包名/应用程序入口界面”启动我们的app

然后输入“adbforward tcp:8700jdwp:3579”回车转发端口,转发成功后,点击调试按钮开始调试,后面的流程和普通模式调试完全一致。到此我们就讲完AndroidStudio的两种动态调试。

团队公开知识库链接:

https://www.yuque.com/whitecatanquantuandui/xkx7k2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WhITECat安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
远程调试
远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档