Code Grafter 是一个 IDA Python 脚本,它利用 IDA Pro 的 Bochs IDB Mode 来模拟导入 Windows API 函数的代码。类似 Bochs IDB mode 的模拟环境无法解析或模拟导入的函数,从而导致异常以及无法对某些代码使用模拟。Code Grafter 通过插入 opcodes 和数据来模拟一小部分导入的 Windows API 函数,解决了针对 Windows API 函数子集的问题。Code Grafter 针对的是常见与字符串解码和恶意软件解包相关的简单实现函数。特别是能够将 Bochs IDB Mode 用于这类代码,可以实现对字符串的随意解码以及 payloads 的解包/转储,而无需应对反逆向工程、子进程调试等问题。
文件 function_replacements.c 包含了与简单字符串解码和恶意软件解包例程相关的几个函数的紧凑 C 实现。此文件仅供参考。
编译 function_replacements.c 后,使用 mykutils.py 中的 emit_fnbytes_python() 函数(位于 flare-ida 仓库的 /python/flare 目录下)提取了相关函数的 opcodes。然后将这些 opcodes 作为 Python strings 添加到 code_grafter.py(同样位于 /python/flare)中的函数实现库中。