【Android安全- 基于eBPF的安卓CLI调试器——eDBG】此文章归类为:Android安全。
简介
eDBG 是一款基于 eBPF 技术实现的调试工具,为强对抗场景下的安卓 native 逆向工作打造,提供调试器应有的基本功能,在调试时不产生任何附加到目标进程的行为,不使用传统的调试方案,调试器与被调试程序相互独立,仅各自与内核产生交互行为,难以被目标进程调试或干扰。
除此之外,eDBG 和被调试程序运行状态互不干扰,断点注册不基于运行时地址,即使一方意外退出或重启,另一方也依旧能正常工作。
eDBG 的使用方式与 gdb 的使用方式几乎相同,无需学习便可直接上手使用。
项目地址:26cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6e0K9r3W2F1L8@1I4W2j5h3S2Q4x3V1k6W2c8p5u0s2
直接从 Release 下载即可使用。
主要功能
主要支持的功能如下:
- 断点:基于 uprobes 功能实现,在断点处可暂停程序并且读取任意想要的上下文。
- 单步调试:支持步入或步过。
- 内存读写:在断点触发时可以读取任意地址内存,也可以自由写入任意有写权限的地址。
- 线程过滤:你可以仅调试一个或多个想要的线程。
- 符号解析、反汇编等其他调试器应该有的功能。
支持的 gdb 指令列表:break / continue / step / next / finish / until / examine / display / quit / list / info / thread
额外的,你可以使用 write
指令写入内存,set
指令为指定的地址标注你的自定义符号。
eDBG 也支持将你的进度保存到文件或读取工程文件,以便下一次调试。
详细的使用方式请移步README
运行环境
- 目前仅支持 ARM64 架构的 Android 系统,需要 ROOT 权限,推荐搭配 KernelSU 使用
- 系统内核版本5.10+ (可执行
uname -r
查看)
功能演示
整体的界面设计和信息展示参考了 pwndbg,会在断点处自动分析当前代码和寄存器信息,当然你可以在选项里关掉这些显示。

进阶使用
eDBG 使用进阶:避免 uprobes 产生可被察觉的特征
其他
本项目主要受到 stackplz 启发,在实际逆向工作中我常常使用 stackplz 辅助 ida 进行动态调试,但常常被堆积如山的反调试手段或蜜罐打得鼻青脸肿...(菜菜),因此突发奇想将 eBPF 技术直接用于打造一个调试器,虽然比 ida 缺少了图形化界面和反编译(但是现在的 app 还有可以直接 F5 的吗),但是我认为功能也足够作为一个逆向辅助工具进行日常使用。
喜欢的话可以赏个小星星 QAQ
也欢迎提出建议或 issue 或 PR 喵
更多【Android安全- 基于eBPF的安卓CLI调试器——eDBG】相关视频教程:www.yxfzedu.com