Lucrehulk/WasmCrack
GitHub: Lucrehulk/WasmCrack
一套基于Rust的WebAssembly二进制分析工具集,专为逆向工程浏览器游戏客户端和WASM模块而设计,通过静态分析提取魔数、识别加密特征并生成伪代码。
Stars: 3 | Forks: 0
# WasmCrack
一套先进的 WASM 二进制分析工具集,专为逆向工程 WebAssembly 二进制文件而设计。
**WasmCrack** 是一个高级的 WebAssembly (v1.0) 二进制分析工具包,专为逆向工程师设计。WasmCrack 的最终愿景是成为一套全面的实用工具集,帮助安全研究人员和逆向工程师分析、修改和破解 WebAssembly 客户端——特别是那些用于基于浏览器的复杂网页游戏的客户端。
## 🚀 快速开始
WasmCrack 将您的逆向工程目标组织为 **项目**。
### 1. 项目设置
要创建一个新项目,请将您的目标 WebAssembly 二进制文件添加到 `binaries/` 目录中。您提供的文件名(不带扩展名)将成为您的项目名称。
### 2. 执行
一旦您的二进制文件放置在 `binaries/` 文件夹中,通过执行以下命令来初始化项目并运行分析:
```
cargo run ...
```
*注意:执行项目将自动针对目标二进制文件运行当前所有可用的 WasmCrack 功能。如果输出目录不存在,WasmCrack 将为您创建它们。*
### 示例
WasmCrack 提供了一些流行的 `.io` 游戏作为默认示例(`agar.io`、`arras.io`、`diep.io`)。要一次性针对所有三个默认二进制文件运行该工具包,请使用:
```
cargo run agar arras diep
```
## 🛠️ 当前功能
WasmCrack 目前支持以下自动分析实用工具:
* **`wasm2js`** 将 WebAssembly 二进制文件解析为完整的 JavaScript 伪代码解释。这对于需要在标准脚本环境中阅读、理解或复制 Wasm 模块底层功能的逆向工程师来说非常完美。输出将转储到您项目目录中的 `wasm2js-output.js`。
* **`code-magic`** 静态分析二进制文件的代码段(Section 10)以寻找启发式模式。它搜索硬编码的魔数常量,识别潜在的加密签名,并筛选 UTF-8 编码的字符串/片段。输出将转储到您项目目录中的 `code-magic-output.txt`。
* **`data-magic`** 与 `code-magic` 类似,但专门针对二进制文件的数据段(Section 11),以提取敏感常量、字符串和魔数。输出将转储到您项目目录中的 `data-magic-output.txt`。
* **`call-data`** 静态分析代码段,并解析关于每个 WebAssembly 函数中扩展的函数调用的数据。它还提供有关这些调用的执行是否是绝对的(如果调用是在根级别进行的,则没有分支逻辑阻止其发生),或者是否是条件性/不确定的数据(WasmCrack 目前无法安全地确定在控制流中进行的调用是否是绝对的)。输出将转储到您项目目录中的 `call-data.txt`。
* **`bit-ops-cmp`** 静态分析代码段,并跟踪每个 WASM 函数中按位运算指令与总运算的比率。数据在完成时即被推送并已排序(从高到低),比率排名(最高比率 - 最低比率)的输出将转储到您项目目录中的 `bit-ops-cmp.txt`。比率越高表示该函数用于加密的可能性越高。
* **`store-ops-data`**: 静态分析代码段,并定位函数中内存存储指令的任何实例。它将输出有关存储的地址、值和类型的数据。此外,如果存储指令是一个直接包含 XOR 运算的表达式,它也会提供数据(请注意,目前如果表达式是被引用的而不是内联的,即使逻辑上引用者求值为包含该运算的表达式,它也无法识别 XOR 的使用)。数据将转储到您项目目录中的 `store-ops-data.txt`。
## 🚧 计划功能(路线图)
以下实用工具计划在未来版本中发布,旨在将 WasmCrack 扩展为一个完整的动态和静态分析套件:
### 目前正在开发中
* **`func-hook`**: 动态检测。生成目标 WebAssembly 二进制文件的修改版本,将自定义导入调用注入到*每个*函数中。此钩子将在运行时捕获并导出调用者信息、参数值和全局状态。
### 提议的新增功能
* **`local-trace`**: 精确追踪。指定一个 Wasm 函数和一个特定的局部变量,WasmCrack 将精确映射该局部变量在函数执行过程中是如何被修改的。
* **`mem-trace`**: 内存地址监控。指定线性内存地址,以追踪这些位置在二进制文件的所有函数中是如何以及在哪里被访问或修改的。
* **`ctrl-trace`**: 高级控制流分析。将追踪复杂的、重度嵌套的块结构,以分析并输出给定控制结构内所有可能的分支可能性。
* **`trace-indirect`**: `call_indirect` 去混淆。由于间接调用经常被用于混淆 Wasm 控制流,该工具分两步解决它们:
1. **静态:** 分析二进制文件以推断间接调用中使用的表索引值。
2. **动态:** 如果静态分析失败,它会自动使用导入钩子修补 Wasm 二进制文件,该钩子在运行时拦截间接调用,从而保证表值的解析。
* **`advanced-algo-detection`**: 对二进制文件的代码段进行高级扫描。此终极功能不再仅仅尝试通过匹配魔数来确定加密,而是直接分析函数的逻辑和代码,以确定它是否在分析某种加密算法。
标签:AI工具, Crack, CTF工具, Rust, URL提取, WASM, wasm2js, WasmCrack, WebAssembly, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 伪代码, 反编译, 可视化界面, 安全专业人员, 恶意代码分析, 数据可视化, 混淆分析, 游戏安全, 漏洞搜索, 网络流量审计, 逆向工程, 通知系统, 配置文件, 静态分析, 静态检测