LIKE-DBG (LInux-KErnel-DeBuGger) 旨在自动化搭建 Linux 内核调试环境时那些繁琐的步骤。 我开始深入研究内核漏洞利用领域,发现现有解决方案不够好用。 因此,本项目试图让正式开始研究之前的所有必要预备步骤尽可能轻松有趣。 从构建内核、在模拟环境中运行内核,到附加调试器,所有步骤都在 docker 容器内透明地完成,以将系统要求降至最低。 目前,以下每个步骤都有一个专用的 docker 容器:
由于该项目仍处于早期阶段,预计内容会快速变化,同时也会不断引入破坏性变更。 主要的改进点包括:
x86_64 和 arm64 之外,逐步实现真正的多架构支持好的一面是,尽管处于早期阶段,一些有用的功能已经具备:
configs/user.ini 配置文件,可实现高度可定制的会话
ctf/misc 目录中存放了一些在 CTF 中很有用的小脚本x86_64、arm64gcc 或 clang 构建内核configs/*.ini 文件中自定义 QEMU 运行时选项。io/scripts/gdb_script 中指定 GDB 脚本,以获得针对特定场景定制的调试体验要开始使用,你需要确保系统已满足以下要求:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/建议不要以 root 用户身份运行,例如在 VPS 上进行测试时。
以 root 运行也许没问题,但总的来说,我强烈建议创建一个专用的非 root 用户,并将其加入 docker 和 sudo 组!
注意:如果你使用的是自定义 TMUX 配置,请确保第一个窗格从 0 开始!
本节介绍的工具_并非_运行 LIKE-DBG 所必需,但拥有它们会非常方便,在调试或编写漏洞利用时能提供很大帮助。
在 like-dbg 目录中运行 poetry install
微调内核调试体验是本项目的目标之一。
目前,所有可调选项都暴露在两个配置文件中:configs/system.ini 和 configs/user.ini。
某些字段建议不要修改,因为它们主要用于开发目的。
不过,所有用于按需定制环境的选项都应该是显而易见的,因为它们都带有简短的注释。
注意: 首次使用时请运行 poetry install。
当你编写/调整好配置后,具体用法取决于你的场景。
基于 configs/user.ini 配置的最简单入门方式如下:
tmux -f .tmux.conf
poetry shell
# This checks out a kernel, builds it, creates a root file system and starts the debugger and debuggee eventually
./start_kgdb.py
自动创建的文件系统中存在两个用户:
root,无密码user:user这是有意为之,以便你可以轻松地从任一视角进行开发和漏洞利用。
# If you want to try a CTF challenge where you were given a (compressed) Linux Image and a root filesystem try:
./start_kgdb.py --ctf <Image> <RootFS>
# If you want to kill the current debugging session
./start_kgdb.py -k
# If you want to provide a custom 'user.ini' for a specific debugging setup
./start_kgdb.py -c <path_to_cfg> [other_args]
# If you want to test some partial functionality of LIKE-DBG
# Stage 1: Download Kernel
# Stage 2: Stage 1 & unpack Kernel
# Stage 3: Stage 2 & build Kernel
# Stage 4: Only build a root file system
# Stage 5: Stage 3+4 & start debuggee
./start_kgdb.py -p <stage_nr>
# Update all containers
./start_kgdb.py -u
examples 子目录中存放了一些示例,展示 LIKE_DBG 如何在特定的内核调试任务中为你提供帮助。
每个示例还包含一个专门的 README.md,其中包含复现示例所需的信息。

Python 代码应该相当易读,欢迎你用自己想法来扩展这个项目。非常欢迎所有 PR :)! 此外,你也可以随时创建功能请求 issue,或前往讨论页面集思广益,构思一些炫酷的新功能!
附:如果你想提供 logo,请随时提交。