.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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |