文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android渗透测试12:IDA动态调试so

2023-10-20 17:43

关注

0x00 前言

上一篇分享了使用 Android studioJeb 对 Apk 文件直接进行动态调试,本文将分享使用 IDA pro 调试
so

调试的 apk 文件还是使用 CTF案例4 的文件,已经上传到知识星球,可自行下载

本文涉及技术:

注意:本案例所需要的 apk 文件,已经上传到知识星球,需要的朋友可以到文末关注后下载

0x01 准备

1、下载案例 Apk 文件

使用 Android Killer 工具修改配置文件,加上 android:debuggable=“true” 这个配置,这样 apk
就可以被调试了。

1660661572_62fbaf44874ec390c7f1a.png!small?1660661572861

找到IDA_Pro_v7.5_Portable\dbgsrv目录,里面文件对应不同平台的 server 文件:

1660661588_62fbaf5447e56247a4f11.png!small?1660661588781

查看手机的 cpu 架构:

1660661601_62fbaf6145f9d7bb70888.png!small?1660661601912

调试的手机是 android 的 arm64-v8a,可以选择 android_server64 ,把这个文件发送到
手机的/data/local/tmp目录,然后赋予执行权限,最后执行。

1660661613_62fbaf6d01e4e49ed0d57.png!small?1660661613146

默认的端口是 23946 ,这里故意改为 22222

5、端口转发

adb forward tcp:11111 tcp:22222    

这里表示将本地 11111 端口(我本机是 windows),转发到远程手机 22222 端口:

1660661630_62fbaf7e6c3dc47200030.png!small?1660661630518

准备工作做好之后,将讲解两种方式调试,一种就是普通启动 apk 的调试,一种是以 Debug 模式启动 apk
的调试。如果调试的代码逻辑,在启动之后,则可以使用普通启动apk的调试模式,如果调试的代码逻辑在启动的时候就执行了,这时需要使用 Debug 模式启动
Apk 进行调试。

0x02 普通模式调试

adb 启动对应的 Activity,这里使用 普通模式启动 apk

adb shell am start -n  com.example.hellojni/com.example.application.IsThisTheRealOne 

打开 IDA pro 64 位版本,加载 arm64-v8a 中 libhello-jni.so 文件

IDA 调试配置

选择 Remote ARM Linux/Android debugger 调试

1660661646_62fbaf8ecbf4548ed9799.png!small?1660661647218

选择 Debugger options 勾选以下三个选项

1660661671_62fbafa75122a8381f6e1.png!small?1660661671685

选择 Process options 进行配置:

1660661678_62fbafae9f641ac58d6d5.png!small?1660661679030

选择需要 attach 的进程

1660661689_62fbafb9ec67d1aaa3d21.png!small?1660661690100

出现 Debugger warning

这表示在手机中找到和本地加载相同的 so 文件,选择 same:

1660661704_62fbafc8bc4133fcef502.png!small?1660661705133

在模块中搜索,需要调试的模块

1660661714_62fbafd224aad1de56342.png!small?1660661714420

然后定位要打断点的函数:

1660661730_62fbafe20cd95c01aa627.png!small?1660661730249

打断点

这里可以直接使用快捷键 F5 ,然后在 c/c++ 的伪代码里打断点:

1660661744_62fbaff0243ab0bb174ac.png!small?1660661744548

开始调试

点击 Quick debug view ,打开 Locals 窗口,F9 运行,F8 单步步过,进行调试

1660661756_62fbaffc4927544038e63.png!small?1660661756521

成功拿到 flag 值。

0x03 Debug模式调试

打开 Android device monitor 工具

这个工具在 Android studio 的Android\Sdk\tools目录下

Debug 模式 启动 apk的 Activity

adb shell am start -D -n  com.example.hellojni/com.example.application.IsThisTheRealOne

发现在 Android device monitor 中,将要调试的程序前面,多了一个 红色的虫子

1660661774_62fbb00ed6ad6ff076fab.png!small?1660661775093

打开 IDA ,加载 so(同上)

IDA 调试配置,勾选三项等,找到要调试的进程(同上)

执行 jdb 命令

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8608

这里的端口,可以在 Monitor 中查看到

执行完成之后, 红色的虫子变为绿色的虫子 ,接着就可以开始调试了

1660661788_62fbb01c9c3a74578934b.png!small?1660661788770

开始调试,按 F9 ,知道出现

1660661804_62fbb02cd6fc89d2bba82.png!small?1660661805156

这个时候就加载到需要调试的 so 了

在模块中查找需要调试的模块,以及模块中的具体函数(同上)

1660661813_62fbb03553de9e3fd5eb0.png!small?1660661813894

继续调试

打开 Locals 查看变量,

1660661831_62fbb0478bcce9c22276c.png!small?1660661831779

成功拿到 flag 值。

0x04 结语

在 Android 逆向中,动态调试是非常重要的一个技术,IDA pro 时调试 so 代码的利器。感兴趣的朋友,可以下载案例的 apk 文件,实战起来。

s 查看变量,

[外链图片转存中…(img-taWTTYnM-1674869592787)]

成功拿到 flag 值。

0x04 结语

在 Android 逆向中,动态调试是非常重要的一个技术,IDA pro 时调试 so 代码的利器。感兴趣的朋友,可以下载案例的 apk 文件,实战起来。

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

来源地址:https://blog.csdn.net/text2201/article/details/128774882

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯