用途:针对反编译产物中的混淆进行还原,包括花指令(反汇编碎片、恒等跳转)、控制流平坦化(if/while 变为 switch 分发)、字符串加密(静态只见密文数组),目标是还原算法与授权逻辑。适用于 CTF 反混淆题目,以及脱壳后仍有代码混淆的样本。干净代码、仅需绕过保护、壳层混淆等场景不适用。
主要能力:清除花指令(将垃圾指令 patch 为 NOP、修复跳转目标与函数边界);识别并还原控制流平坦化(定位 dispatcher 的 switch 变量、跟踪写入点、连接各 case 目标);定位并仿真字符串解密循环,批量解密全部字符串;还原前后对比验证。
使用方式:先准备反编译产物(如 Ghidra、IDA、radare2),再按步骤处理。花指令清除可用 rizin 的 wx 90 @ 0x401000 单字节 NOP,或 Ghidra 的 Patch Instruction、IDA 的 Edit > Patch Program > Assemble。平坦化可用 IDA 插件 D-810 的 Deobfuscate 菜单自动还原,失败则手动跟踪状态变量。字符串解密可静态定位密文数组与解密循环,动态在调试器断点读取,或用 python3 复刻算法仿真,再用 idapython 或 rizin/rzpipe 批量解密。修改前先备份原文件并记录 sha256,每步 patch 后重新反汇编确认无 undefined 指令。
限制与注意:反混淆是迭代过程,需逐层还原并验证;状态变量找错会导致控制流错乱;运行时才解密的字符串需动态读取;多层混淆叠加常见,不宜一步到位。资料未提供具体收费、价格与平台信息。