Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
obfuscation_analysis — Binary Ninja 插件,用于分析和简化混淆代码 | Kitploit
工具/GitHubGitHub/mrphrazer/obfuscation_analysis
静态分析代码分析逆向工程恶意软件分析实用工具与框架二进制分析
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

Binary Ninja 插件,用于分析和简化混淆代码

查看仓库
25523214个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

混淆分析 (v1.3)

作者:Tim Blazytko & Nicolò Altamura

分析和简化混淆代码

描述:

混淆分析 是一个 Binary Ninja 插件,可让您轻松应对高度保护的二进制文件。 它捆绑了一些专注的辅助工具,让您可以

  • 一键简化混合布尔算术 (MBA) 表达式(基于 msynth)
  • 定位并清除反汇编损坏的函数

一些示例用例可以在 examples 中找到。此外,REcon 演讲“Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications”展示了一些用例。幻灯片可以在这里找到。该插件补充了 Obfuscation Detection:一旦可疑函数被标记,混淆分析 可帮助您清理和理解它们。更多辅助工具将陆续添加。

核心功能

  • 在 Binary Ninja 的反编译视图中简化混合布尔算术混淆
  • 识别并移除反汇编损坏的函数
  • 在反编译视图中内联函数
  • 高效且架构无关的实现
  • 作为后台任务运行
  • 细致的错误处理:简洁的用户消息,完整的跟踪记录在 Debug 日志中

安装

该工具可以通过 Binary Ninja 的插件管理器安装。

如需手动安装,请在 Binary Ninja 的插件文件夹中执行以下步骤:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_analysis.git
cd obfuscation_analysis

# optionally: use a virtual environment
python -m venv obfana-env
source obfana-env/bin/activate

# install requirements
pip install -r requirements.txt

如果您使用虚拟环境,则需要在 Binary Ninja 设置中手动设置 site-packages 路径。

使用方法

该插件可从 Binary Ninja 的顶部菜单栏 Plugins -> Obfuscation Analysis 下访问。

Plugin Menu

MBA 简化

要简化算术混淆,首先在反编译视图中高亮您想要简化的 HLIL 表达式。接下来,选择 Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify。插件会解析完整的计算过程,通过 msynth 运行,并将简化结果作为注释插入到同一行。下面的简短动画展示了整个工作流程:

MBA Simplification Workflow

MBA 简化依赖于 msynth。默认情况下,插件使用 msynth 的默认简化预言机,该预言机随插件一起提供并已预配置。如果您想使用更大或自定义的预言机,请手动设置 obfuscation_analysis.mba_oracle_path,或在 Binary Ninja 的设置窗口中浏览到该文件。

Plugin Settings

如果出现问题,插件会向日志窗格写入简洁的用户级消息;将日志视图切换为 Debug 以查看完整的回溯信息。

Log Output

功能

该插件提供专注的辅助工具,针对您在逆向受保护二进制文件时遇到的常见障碍,每个工具都可以从 UI 或无头脚本作为后台任务运行。以下是当前可用的功能。

损坏的函数

损坏的函数是指反汇编显示未定义产物的函数——空的基本块、无效或重叠的指令等。此辅助工具遍历整个 BinaryView,标记具有这些症状的函数,并列出它们,以便分析师可以快速检查被错误解析或故意混淆的代码。可选的移除操作会擦除所有被标记的函数并强制重新分析,从而清理函数列表。它特别适用于定位

  • 反汇编器错误地提升为代码的数据块
  • 破坏直线反汇编的混淆桩
  • 使用重叠指令或未对齐跳转的函数
  • 遇到不常见指令的新架构问题

MBA 简化

混合布尔算术 (MBA) 是一种混淆技术,将简单的计算埋藏在冗长的算术和布尔运算链中。此功能在反编译器中简化此类表达式。当您选择一条 HLIL 指令时,插件会收集其完整的计算链,使用限制在当前基本块内的 SSA 后向切片,将该切片转换为 Miasm IR,将其输入 msynth,最后将简化结果作为注释添加到反编译视图中。此功能允许您

  • 将多行 MBA 纠缠折叠为单个可读的等式
  • 解析依赖 MBA 的不透明谓词
  • 将复杂的常量编码折叠为其字面值

函数内联

对于当前选中的函数,此辅助工具在反编译视图中递归内联每个被调用者,为 Binary Ninja 提供单个自包含的 IL。所有边界消失后,反编译器可以跨函数传播数据,从而实现更深入的常量折叠、死代码消除以及更清晰的逻辑。使用它来

  • 折叠由微小包装器、thunk 或访问器辅助函数组成的链
  • 改善被拆分到多个函数中的算法表示
  • 分析逻辑被故意分散在函数之间的混淆方案

请注意,在非常大的函数或深层调用树上,HLIL 可能会变得非常庞大且渲染缓慢。此外,一旦所有内容合并为单个单元,某些反编译器优化可能会变得不那么有效。要控制这一点,您可以限制内联深度:将 Settings -> Obfuscation Analysis -> Max Function Inlining Depth 设置为上限 N(默认设置为 1)。设置深度限制后,仅内联前 N 个调用层级;更深的调用不会被内联。

限制

该插件有一些您应该注意的注意事项,其中大部分与 MBA 简化流程相关:

  • Binary Ninja 缺陷:在 BN 5.0 稳定版上,后向切片步骤可能因缺少 HLIL 类型转换而失败:https://github.com/Vector35/binaryninja-api/issues/6371;该问题已在 5.1.7477-de 及更新版本中修复

  • 切片限制在一个基本块内:位于前驱块中的变量定义被忽略(通常依赖于控制流),因此某些 MBA 项可能保持部分解析状态

  • HLIL 到 Miasm IR 的转换缺口:并非每个 HLIL 构造都有可靠的 Miasm 等价物;当转换失败时,表达式被跳过并记录错误

  • IL 覆盖范围:控制流节点和浮点运算目前尚未转换

  • 继承的 msynth 约束:MBA 简化继承了所有 msynth 限制

联系方式

如需更多信息,请联系 Tim Blazytko (@mr_phrazer) 或 Nicolò Altamura (@nicolodev)。

下载工具