.NET反混淆工具de4dot使用介绍
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
最近在逛看雪时,发现一个帖子,https://bbs.kanxue.com/thread-274562.htm。里面介绍 了常见语言基础逆向方法合集。关于.net程序逆向这块,介绍了三个工具。
https://www.red-gate.com/products/dotnet-development/reflector/ (反编译任何 .NET 代码,即使没有源代码) dnspy https://github.com/dnSpy/dnSpy (.NET 程序集调试器和资源编辑器) de4dot(.NET 反混淆和脱壳工具) 目前.NET程序加壳这一块我还没涉及到,所以本文只介绍反混淆相关的功能。 在经过初次尝试以后,发现这个工具确实强大,虽然被混淆后的代码不能完成恢复成原来的样子(像变量名这种已经丢失了),但基本不影响阅读源码了。
1、下载源码编译 项目地址:https://github.com/de4dot/de4dot
这里有两个解决方案文件,一个是基于.NET Core的(de4dot.netcore.sln),一个是基于.NET Framework的(de4dot.netframework.sln) 如果使用.net core版本,需要安装netcoreapp3.1和netcoreapp2.1 如果使用.net framework版本,需要安装net 35和net45 我这里直接编译的.net framework版本,没有编译.net core版本了。 注意: 如果选择.net framework版本建议使用Visual Studio 2019及以下版本编译,因为Visual Studio 2022不带.NET Framework 4.5的包,直接编译会报错,还得折腾在Visual Studio 2022下安装NET45的开发包。(同理,新版本vs也没带.net core 2.1) 不过这里还是整理了在Visual Studio 2022下安装NET 45的解决方案,可以参考以下链接: https://ldqk.xyz/73?t=vl40kuee4phc https://blog.walterlv.com/post/how-to-support-net45-on-vs2022-or-later.html 具体我也没有去尝试,因为我用另外一台机器上的Visual Studio 2019编译通过了 不用修改任何设置,直接可以编译通过,输出路径为解决方案路径下的Debug目录
2、如何反混淆.NET 程序集 最简单粗暴的方式, 1、将文件拖入到de4dot.exe运行即可 2、命令行下输入 1 de4dot.exe "D:\xxx.exe" 运行后文件在程序集的目录下生成一个带-cleaned的新程序集。 也可以通过 -f 和-o 参数,指定输出 路径 -f : 指定.NET 程序集文件 -o : 指定输出 文件 1 de4dot.exe file1 -f "D:\xxx.exe" -o "D:\output\xxx_cleaned.exe" 这里我准备了一个程序集测试,我先用某混淆工具进行混淆,使用.NET Reflector反编译显示如下:
使用de4dot反混淆后
3、反混淆整个文件夹 -r xxx : 指定输入文件夹,包括子文件夹 -ru : 跳过不支持的混淆工具混淆过的文件 -ro : 指定输出文件夹 1 de4dot -r "D:\input" -ru -ro "D:\output"
4、检测混淆工具名称 可以通过 -d 参数查看 1 de4dot.exe -f "D:\a\xxx.exe" -d 输出为: 1 de4dot v3.1.41592.34052 3 Detected Dotfuscator (D:\a\xxx.exe) 如果使用 -r ,则输出 整个文件夹里全部文件使用的混淆工具名称
5、指定混淆工具名称 de4dot可能检测不准确混淆工具的名称,可以通过 -p 参数指定 1 de4dot file1.dll -p sa de4dot中支持的完整的混淆工具简写可以在不带参数运行时的界面上看到
6、其它用法 可以在不带参数运行时,看到全部参数及说明,或者通过项目主页上的README.md了解更详细的使用说明。我这里基本已经能满足使用需求,所以也就不再进行深一步的探讨了。 阅读原文:原文链接 该文章在 2025/7/18 11:07:10 编辑过 |
关键字查询
相关文章
正在查询... |