flare-qdb 是一款基于 Python 的命令行及可脚本化工具,用于评估和操控原生程序状态。它利用 Vivisect 在每条被查询的指令上设置断点,并在命中时执行 Python 代码。
flare-qdb 让分析人员能够采用非线性方式开展动态分析,以适应正常调试和静态分析过程中产生的各种疑问。使用 flare-qdb,无需手动设置交互式调试器会话并将程序计数器导航到相应代码位置,即可回答这些问题。
以下是 flare-qdb 能够回答的一些即兴问题示例:
argv[1] 的值?flare-qdb 还可用于实现自动化、可重复的程序执行操控。以下是一些有用的应用示例:
Sleep() 的参数,以便对自定义命令与控制(C2)服务器进行快速迭代测试。MANDATORY_LOW_RID),以诱导其执行漏洞利用代码。flare-qdb 接受多个查询,其形式为程序计数器或 Vivisect 表达式,配以在 flare-qdb 脚本环境中评估的若干 Python 代码。Vivisect 表达式可用于指定简单的常量程序计数器值(如 "0x401000")、符号表达式(如 "kernel32.Sleep")等。Vivisect 表达式还可以整合寄存器和内存状态,以表达复杂条件,例如 "not eax or (( edx > 3) and (poi(ebp-8) < 5))"。
命令行参数的格式为:
-at <vexpr-pc> <pythontext>
flare-qdb 还支持基于 Vivisect 表达式真值条件评估:
-at-if <vexpr-pc> <vexpr-conds> <pythontext>
flare-qdb 提供了若干内置函数以方便调试,既可在命令行中使用,也可作为其 Qdb 类的方法使用。
flare-qdb 主要在 Windows 上进行了测试,但也适用于 Linux。遗憾的是,Vivisect 的 vtrace.Trace 类在 Darwin 上的移植尚不完整,因此 flare-qdb 不支持 OSX。
flare-qdb 附带了 De-DOSfuscator,这是一个通过运行混淆批处理文件来解码的工具。详细信息请参阅 De-DOSfuscator 指南 或阅读博客文章 Cmd and Conquer: De-DOSfuscation with flare-qdb。
关于安装 flare-qdb 的信息,请参阅 安装指南。
关于在命令行中使用 flare-qdb 的信息,请参阅 命令行使用指南。
关于使用 flare-qdb 进行脚本编程的信息,请参阅 脚本指南。针对脚本编程的 Qdb 类方法可在 方法参考 中找到。
flare-qdb 内置函数的完整参考(既可在 CLI 中使用,也可作为实例方法使用)可在 内置函数参考 中找到,或在安装 flare-qdb 后通过键入 flareqdb --help-builtins 获取。
De-DOSfuscator 的文档可在 De-DOSfuscator 指南 中找到。
故障排除信息可在 故障排除指南 中找到。
致谢以及关于可能有用的未来功能的思考,可在 备注 中找到。