.NET反混淆工具de4dot使用介紹
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
最近在逛看雪時(shí),發(fā)現(xiàn)一個(gè)帖子,https://bbs.kanxue.com/thread-274562.htm。里面介紹 了常見語言基礎(chǔ)逆向方法合集。關(guān)于.net程序逆向這塊,介紹了三個(gè)工具。
https://www.red-gate.com/products/dotnet-development/reflector/ (反編譯任何 .NET 代碼,即使沒有源代碼) dnspy https://github.com/dnSpy/dnSpy (.NET 程序集調(diào)試器和資源編輯器) de4dot(.NET 反混淆和脫殼工具) 目前.NET程序加殼這一塊我還沒涉及到,所以本文只介紹反混淆相關(guān)的功能。 在經(jīng)過初次嘗試以后,發(fā)現(xiàn)這個(gè)工具確實(shí)強(qiáng)大,雖然被混淆后的代碼不能完成恢復(fù)成原來的樣子(像變量名這種已經(jīng)丟失了),但基本不影響閱讀源碼了。
1、下載源碼編譯 項(xiàng)目地址:https://github.com/de4dot/de4dot
這里有兩個(gè)解決方案文件,一個(gè)是基于.NET Core的(de4dot.netcore.sln),一個(gè)是基于.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及以下版本編譯,因?yàn)?/span>Visual Studio 2022不帶.NET Framework 4.5的包,直接編譯會(huì)報(bào)錯(cuò),還得折騰在Visual Studio 2022下安裝NET45的開發(fā)包。(同理,新版本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 具體我也沒有去嘗試,因?yàn)槲矣昧硗庖慌_(tái)機(jī)器上的Visual Studio 2019編譯通過了 不用修改任何設(shè)置,直接可以編譯通過,輸出路徑為解決方案路徑下的Debug目錄
2、如何反混淆.NET 程序集 最簡單粗暴的方式, 1、將文件拖入到de4dot.exe運(yùn)行即可 2、命令行下輸入 1 de4dot.exe "D:\xxx.exe" 運(yùn)行后文件在程序集的目錄下生成一個(gè)帶-cleaned的新程序集。 也可以通過 -f 和-o 參數(shù),指定輸出 路徑 -f : 指定.NET 程序集文件 -o : 指定輸出 文件 1 de4dot.exe file1 -f "D:\xxx.exe" -o "D:\output\xxx_cleaned.exe" 這里我準(zhǔn)備了一個(gè)程序集測(cè)試,我先用某混淆工具進(jìn)行混淆,使用.NET Reflector反編譯顯示如下:
使用de4dot反混淆后
3、反混淆整個(gè)文件夾 -r xxx : 指定輸入文件夾,包括子文件夾 -ru : 跳過不支持的混淆工具混淆過的文件 -ro : 指定輸出文件夾 1 de4dot -r "D:\input" -ru -ro "D:\output"
4、檢測(cè)混淆工具名稱 可以通過 -d 參數(shù)查看 1 de4dot.exe -f "D:\a\xxx.exe" -d 輸出為: 1 de4dot v3.1.41592.34052 3 Detected Dotfuscator (D:\a\xxx.exe) 如果使用 -r ,則輸出 整個(gè)文件夾里全部文件使用的混淆工具名稱
5、指定混淆工具名稱 de4dot可能檢測(cè)不準(zhǔn)確混淆工具的名稱,可以通過 -p 參數(shù)指定 1 de4dot file1.dll -p sa de4dot中支持的完整的混淆工具簡寫可以在不帶參數(shù)運(yùn)行時(shí)的界面上看到
6、其它用法 可以在不帶參數(shù)運(yùn)行時(shí),看到全部參數(shù)及說明,或者通過項(xiàng)目主頁上的README.md了解更詳細(xì)的使用說明。我這里基本已經(jīng)能滿足使用需求,所以也就不再進(jìn)行深一步的探討了。 閱讀原文:原文鏈接 該文章在 2025/7/18 11:07:10 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |