MadMin3r/UnconfuserEx
GitHub: MadMin3r/UnconfuserEx
一款专门针对 ConfuserEx 2 保护的 C# 二进制文件进行脱壳反混淆的工具,帮助安全分析人员还原被混淆的 .NET 程序代码。
Stars: 58 | Forks: 29
# UnConfuserEx
一款用于脱壳(反混淆)受 ConfuserEx2 保护的 C# 二进制文件的工具。
这原本是一个私有项目,由于对我来说已经没有什么实际用途,我决定将其公开。由于当时去除保护功能的代码非常针对我逆向分析的那个特定二进制文件,因此在其他文件上很可能会出现运行错误。所有的清除器(Remover)都被添加到了一个“管道(pipeline)”中,因此如果你需要去除某些自定义保护,添加起来应该相当简单。
如果确实出现了错误,你可以自行修复,或者提交一个 issue。由于这段代码从来没打算公开,所以写得非常(注意:是极其)糟糕。我不喜欢看它,所以我干脆就不看了(不过,无聊的时候我偶尔也会想去修几个恶心的 bug)。
## 使用方法
UnConfuserEx.exe <可选: deobfuscated_output>
只需指定目标二进制文件即可。如果未指定输出文件名,输出结果将被命名为“obfuscated_target-deobfuscated”
## 保护机制
UnconfuserEx 移除了大多数常见的保护机制,但我并未对其移除的保护机制的所有组合进行过详尽的测试。具体情况请自行评估(YMMV)。
- [x] Anti-Debug
- [x] Safe
- [x] Win32
- [x] Antinet
- [x] Anti-Dump
- [ ] Anti-Tamper
- [x] Normal
- [ ] Anti (与 Normal 相同,只是带有调试器检查 - 很容易实现)
- [ ] JIT (从未研究过这个)
- [ ] Compressor (没见过这种,未尝试过移除)
- [ ] Normal
- [ ] Compact
- [x] Constants (同时也移除了所有类型的控制流守卫)
- [x] Normal
- [x] Dynamic (expression)
- [x] x86
- [ ] Control Flow
- [x] Switch
- [ ] Jump (我从未见过被 Jump 混淆的二进制文件,所以 :shrug:)
- [ ] Reference Proxy
- [x] Normal
- [ ] Dynamic (expression) (这个可能也被移除了?从未测试过)
- [x] x86
- [x] Renamer (所有非 ASCII 名称都会被替换为通用的 (Type)No,以提高可读性)
- [ ] Resources
- [x] Normal
- [ ] Dynamic
可能还有其他我遗漏的保护机制。
## 问题反馈
如果你在对二进制文件进行反混淆时遇到了持续出现的错误,并希望提交 issue,请遵循以下步骤:
1. 去除文件的扩展名(反正我永远不会执行发给我的任何文件,这只是一种基本的礼貌,你懂的 :) )
2. 使用 Zip/rar/7zip/或其他工具将所有文件打包
3. 创建一个 issue,附带反混淆失败时的控制台输出,以及上述压缩包的下载链接。如果你对该问题进行过任何调查,请务必分享你的发现,即使你认为它们没什么用;结果可能会让你大吃一惊。
4. 祈祷我最终会看到它并将其修复。
## 贡献指南
欢迎所有贡献,提交 pull request 即可,我最终会抽空查看的(如果你认为它特别重要,想办法在某个平台上疯狂骚扰我吧,因为我很少查看这个仓库)。
对贡献没有任何特定要求,只要别太蠢就行。
标签:ConfuserEx, DAST, UnConfuserEx, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码混淆, 反混淆, 多人体追踪, 安全防护绕过, 常量解密, 恶意软件分析, 控制流还原, 脱壳, 软件保护, 逆向工程, 重命名, 静态分析