ιldb 是一个基于 LLDB 的调试脚本工具,提供了多种便捷的调试命令和命令管理功能。它通过模块化设计,将常用的调试操作封装为简单易用的命令,并支持命令的保存、显示、删除和执行。如果这些命令的命名方式与您使用的习惯不符合,也可以通过修改 cmd_config.json 来实现个性化定制。
ιldb 内置命令保存与注释功能,可告别「调试命令 / 地址复制到文本、再从文本粘贴调用」的繁琐流程,实现命令的快速执行与管理。
后续笔者有时间了也会继续完善和优化,并且发布在 github 以及 gitee 上,欢迎大家共同讨论和学习。如果你等不及想添加自己的命令,也可以研究一下源码,主要就是修改 ιldb/src/core/ 目录下的 lldb_script_handler.py ,这里面是所有 lldb 脚本的具体实现。utils.py 是一些通用的工具类函数,比如确保地址以 0x 开头等,data_handler.py 主要用于维护一些全局变量,json 就是从这里读取并缓存的。
将 ιldb.py 文件放置在您的 LLDB 插件目录中
在 ~/.lldbinit/ 文件中添加以下命令加载脚本:
加载成功后,您将看到所有已注册的命令列表

保存 LLDB 历史命令到 cmd_record.json 文件中,支持多种格式:
显示已保存的所有命令及其描述:
输出示例:
根据序号删除已保存的命令:
删除后会自动显示更新后的命令列表。
根据序号执行已保存的命令:
执行时会显示命令内容及其描述。

指定当前调试的模块,后续的 mark 命令将基于该模块计算偏移地址:

基于指定模块的偏移地址设置断点,支持多地址:
IDA 中 encryptWithChaCha20Poly1305 函数的偏移地址是 A8F4,那么可以使用 mark 快速打上断点

基于动态地址设置断点,支持多地址:

基于 using 指定的模块 来计算偏移的动态内存地址:

基于当前模块计算静态偏移地址:

对指定地址进行内存修改,默认会执行端序转换:
注意:地址和机器码不一定要以 0x 开头,默认是十六进制。

读取内存内容,支持多种格式:

将指定地址的内存填充为 NOP 指令:

获取地址中的指针地址:
ιldb 使用两个主要的配置文件:
存储命令配置信息,包括:
存储用户保存的命令记录,每个记录包含:
为了提高使用效率,ιldb 提供了以下命令映射:
ιldb 支持通过修改 cmd_config.json 文件添加自定义命令和别名,实现个性化定制。
【 2025年12月20号 】
1、修复 ptr 命令 和 memread -ptr 命令的相关问题;
2、新增 ss 和 sd 命令,可以用于解析 Swift String 对象和 Data 对象。
command script import ***/ιldb.py
command script import ***/ιldb.py
save
save "这是最近一条命令"
save 0 "这是 history 中序号为 0 的命令" 2 "这是 history 命令中序号为 2 的命令"
save 0 2 "这是命令"
save
save "这是最近一条命令"
save 0 "这是 history 中序号为 0 的命令" 2 "这是 history 命令中序号为 2 的命令"
save 0 2 "这是命令"
show
[ 命令列表 ]
0. using —— 指定模块(后续mark命令基于该模块)
1. mark —— 基于模块偏移地址打断点(支持多地址)
2. markd —— 基于动态地址打断点(支持多地址)
3. memread —— 读取内存内容
4. process —— 启动进程
[ 命令列表 ]
0. using —— 指定模块(后续mark命令基于该模块)
1. mark —— 基于模块偏移地址打断点(支持多地址)
2. markd —— 基于动态地址打断点(支持多地址)
3. memread —— 读取内存内容
4. process —— 启动进程
rm 1
rm 0 2 4
exec 1
using
using SwiftDemo.debug.dylib
using
using SwiftDemo.debug.dylib
mark 0x1063c2c10
mark 0x1063c2c10 1063c2c18 0x1063c2c20
mark [0x1063c2c10, 0x1063c2c20]
mark 0x1063c2c10
mark 0x1063c2c10 1063c2c18 0x1063c2c20
mark [0x1063c2c10, 0x1063c2c20]
markd 0x12345678
markd 0x12345678 0x87654321
markd 0x12345678
markd 0x12345678 0x87654321
dy 0xA8F4
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 12小时前
被αβγδεξπ编辑
,原因: