IDA6.6远程调试Android应用程序的一点总结

本文总结了如何使用IDA6.6远程调试Android应用程序的Native层代码,包括非启动运行和启动运行的代码。调试过程涉及到修改boot.img以满足调试条件,使用adb工具,以及配置IDA的调试通道。文章详细介绍了两种调试方法,包括调试非启动运行的代码和启动运行代码的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新接触Android安全,一直在逃避总结,因为懒。。。虽然网上有大把的资料,但是很多都是转载,格式什么的乱七八糟的,对于有严重洁癖的我不能忍。现在刚接触,以后经常用到的东西,还是总结一下加深印象吧,省得总忘,好记性不如烂笔头。

具体环境的搭建这些基础的东西这里就不再说了,JDK,SDK,NDK,IDA这些东西如果还没装的话就先别看这个了。还有就是手机要root,百度一键root就可以,会有su文件。

但是要调试一个APK需要有点准备工作,摘自:http://www.kanxue.com/bbs/showthread.php?p=1291716

根据android的官方文档,如果要调试一个App里面的dex代码,必须满足以下两个条件中的任何一个:
1)  App的AndroidManifest.xml中Application标签包含属性android:debuggable=true
2)  /default.prop中ro.debuggable的值为1
由于正常的软件发布时都不会把android:debuggable设置为true,所以要达成条件1)需要对app进行重新打包,这不仅每次分析一个App都重复操作,而且很多软件会对自身进行校验,重打包后执行会被检测到,所以想办法满足第2)个条件是个一劳永逸的办法,我实际使用的方法就是满足第二个条件。由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。我测试使用的设备为Nexus 7,修改步骤如下:
a)  从Google官方网站下载到boot.img,

### 使用 IDA Pro 远程调试 `gets` 函数 #### 设置远程调试环境 为了使用 IDA Pro 对含有 `gets` 函数的应用程序进行远程调试,需先配置好服务器端和客户端之间的连接。 - **安装并启动远程调试器**:确保目标机器已安装适合操作系统的 IDA Remotely Debugger 版本。对于 Windows 平台而言,这通常意味着设置 dbgsrv.exe 服务[^1]。 ```bash dbgsrv -port=23946 ``` 此命令会在指定端口开启监听模式等待来自 IDA 的连接请求。 #### 配置 IDA Pro 客户端 打开待分析的二进制文件于 IDA 中,并转到菜单栏选择 “Debugger -> Attach”,之后挑选适用于当前场景的目标类型(例如本地、远程 Linux/Windows 等)。针对这里的案例应选取 “Remote Windows debugger”。 输入之前设定的服务端 IP 地址以及相应的端口号完成初步链接建立过程。 #### 开始调试流程 一旦成功附着至进程,则可以在反汇编视图里定位到调用了 `gets()` 的位置处打上断点以便进一步探究其行为特性: ```nasm mov eax, offset buf ; 用户输入缓冲区首地址 call _gets ; 调用 gets 函数读取字符串直到遇到换行符或 EOF ``` 此时当执行流抵达上述指令序列前会被暂停下来允许检查寄存器状态、内存布局等重要信息;更重要的是可以监控传给 `gets` 的参数——即用来存储用户键入数据的目的地指针是否安全可控从而评估潜在风险。 另外值得注意的一点在于实际测试期间应当避免直接交互式输入恶意构造的数据以免造成不必要的损害,而是借助脚本自动化方式精确控制每次传递的内容及其长度以达到预期效果同时保障实验安全性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值