Skip to content

04 · 工具全景 ​

蓝图逆向的工具生态分四类,它们解决的不是同一个问题,混用会踩坑。星标数与许可取自 GitHub API 实测(2026-09)。

一、AST 解析库(地基) ​

这一类不做「反编译」,只负责把字节码正确解析成结构化对象。所有上层工具都建在它们之上。

项目语言许可Stars说明
UAssetAPIC#MIT499低层 .NET 资产读写库;Kismet/Bytecode/ 下有 100 个 EX_*.cs、EExprToken.cs、ExpressionSerializer.cs
CUE4ParseC#Apache-2.0647解析 UE4/UE5 归档与包;Kismet 部分在 UE4/Kismet/,并为多个游戏提供专用表达式类

(EX_*.cs 数量由 GitHub API 列目录实测;CUE4Parse 的定位与用途出自其 README:由 FModel 团队维护,用于解析 UObject、UTexture2D、UAnimSequence、UStaticMesh 等原生数据类)

选哪个

看你的下游工具用什么。 本站的 KismetDecompiler 与 KismetReactor 都基于 UAssetAPI;kismet-analyzer 则是把 UAssetAPI 作为 submodule 一起编译。而 CUE4Parse 的优势在于已经内置了大量逐游戏的适配—— 如果你要处理的游戏正好在它的 GameTypes/ 列表里,能省掉很多逆向工作。

二、反编译器(给人读) ​

项目语言许可Stars能力已知边界
KismetDecompiler(本站)C#—1AST → C++ 风格伪代码;CFG 结构化(17/19 函数零 goto);反 Dispatch;--disasm 反汇编视图;--cfg 流程调试dispatch case 内个别跨段 goto 保留;行级优化只处理「赋值一次 + 相邻使用」的临时量
kismet-analyzerC#MIT120生成 CFG(graphviz / SVG 查看器)、类层次结构、单资产 CFG 直接开浏览器偏「分析与可视化」,不是可读伪代码生成器
KismetKompilerC#—39反编译成 C# 风格语法;并能编译回去作者自述「不是所有蓝图构造都支持」;主要用 UE 4.23 资产测试(Shin Megami Tensei V)

(能力与边界均出自各自 README / 本站 README)

kismet-analyzer 的用法很直观,适合快速看一个资产的控制流:

console
kismet-analyzer cfg unpacked/path/to/YourAsset.uasset
kismet-analyzer gen-cfg-tree unpacked-fsd/ output/ FSD --render --progress

(出自 kismet-analyzer README)

三、往返编译(能改) ​

这是最稀缺的一类——能把改过的逻辑编译回 .uasset。

KismetKompiler 是目前公开资料里最完整的实现,它的设计里有两点值得单独说:

  1. 自带校验:「The tool automatically verifies the equality of the decompiled code to ensure accuracy during the decompilation process.」——反编译完会验证等价性,可以关掉。这个设计本身就说明 「反编译可能不保真」是作者预期内的问题。
  2. 自定义脚本格式:编译走 .kms(KisMetScript)格式,而不是让你直接改伪代码。
console
KismetKompiler compile -i script.kms --asset existing.uasset --usmap mapping.usmap

(用法出自 KismetKompiler README)

它的编辑能力是有限的,README 说得很明确:可以改已有逻辑、加新逻辑、加变量与函数、导入新的库函数, 但不能从零创建类,也不能修改已有的变量/函数定义。

还有几个更早期的尝试,可以作为思路参考(都还很不成熟,star 数为个位数): bp-decompiler-poc(把蓝图转成受 Verse 启发的纯文本格式, 便于手工或 LLM 编辑后再导回编译)、uasset-decompiler。

四、图形化与运行时 ​

项目类型说明
KismetReactor(本站)图形化查看 / 就地编辑WPF;导入查看、自动导入、插入字节码/属性
UEBlueprintGraphViewer上游衍生蓝图反编译 + 调试器 + 引用搜索(fork 自上游)
kismet-analyzer可视化CFG 渲染成 SVG,可在浏览器里看
UE4SS运行时蓝图 mod 加载 + Live Property Viewer/Editor

运行时这条路的定位 ​

UE4SS 的蓝图 mod 加载走的是完全不同的思路:不反编译、不修改游戏文件,而是在运行时把蓝图 mod 加载进去。

As our BP system is based on RussellJ's, this tutorial video is applicable for creating a blueprint mod for UE4SS

(出自 UE4SS · Blueprint Modloading; 注意该页内容很薄,实际细节在视频与源码里)

配合它的 Live Property Viewer and Editor(「搜索、查看、编辑与监视任意已加载对象的属性」), 可以做到「不改一个字节的资产文件,改掉运行时的行为」。

(功能描述出自 UE4SS 文档首页)

什么时候该用运行时而不是静态反编译:

场景选哪条
只想知道逻辑、做分析静态反编译(可批量、可离线)
想改数值 / 临时试效果运行时(Live View),改完即生效
想把改动做成可分发的 mod运行时(蓝图 mod 加载器),不动游戏文件
想把逻辑搬去别处跑(模拟器 / 服务端)直译 AST(本站做法)

选型速查 ​

你的目标建议起点
第一次接触蓝图字节码先用 kismet-analyzer 看 CFG,建立「控制流长什么样」的直觉
要读某个函数的具体逻辑KismetDecompiler(记得配 --usmap;可疑处用 --disasm 回查操作码)
要批量处理 / 写自己的分析直接用 UAssetAPI 或 CUE4Parse 的 AST,别碰伪代码
要改蓝图逻辑并回写KismetKompiler,并准备好接受「不是所有构造都支持」
只想改运行时行为UE4SS 的蓝图 mod / Live View

一个共同的坑

上表所有工具都依赖正确的资产解析。如果 .usmap 缺失或版本对不上, 工具不会告诉你「映射文件不对」,而是给你一份解析错位的产物—— 在蓝图层面上,这种错误往往表现为「函数体看起来很短」或「调用点莫名缺失」, 非常像反编译器的 bug。遇到疑似 bug,先排除 usmap。

相关 ​