de4dot構建過程

2021-09-25 01:18:18 字數 3554 閱讀 5347

使用[.net reflector]對dll進行反編譯時,可能會遇到這樣的情況

這是由於dll結果了混淆,通常的反編譯不能正確解析一些字段

(更正,上圖所示並不是混淆)

這時候需要使用[de4dot]工具先對dll進行反混淆,然後再用[.net reflector]進行反編譯

按照[dnlib]專案的環境:需要vs2017(c#7.3)或更高版本來構建它。還需要.net core sdk 2.1或更高版本

使用visual studio installer對vs2019進行拓展

安裝完成後,開啟[de4dot]專案

構建解決方案

在""…\de4dot\de4dot\obj\x86\debug"路徑下可以看到

cmd執行 「de4dot.exe -r f:\input -ro f:\output」

"f:\input"為dll所在目錄

"f:\output"為dll反混淆後的目錄

得到結果:

f:\github\de4dot\de4dot-x64\obj\x86\debug>de4dot-x64.exe -r f:\input -ro f:\output

未處理的異常: system.io.filenotfoundexception: 未能載入檔案或程式集「de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6」或它的某乙個依賴項。系統找不到指定的檔案。

檔名:「de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6」

在 de4dot_x64.program.main(string args)

警告: 程式集繫結日誌記錄被關閉。

要啟用程式集繫結失敗日誌記錄,請將登錄檔值 [hklm\software\microsoft\fusion!enablelog] (dword)設定為 1。

注意: 會有一些與程式集繫結失敗日誌記錄關聯的效能損失。

要關閉此功能,請移除登錄檔值 [hklm\software\microsoft\fusion!enablelog]。

[hklm\software\microsoft\fusion!enablelog]

第乙個英文是**,首先找到hk開頭的,

hk代表的是:hkey

l代表的是:local

m代表的是:machine

一路找到fusion檔案下,並沒有看到enablelog

在右邊-右鍵-新建-dword(32位)值

十進位制的方式將值設為1

開啟完成

再次cmd執行 「de4dot.exe -r f:\input -ro f:\output」,得到結果:

f:\github\de4dot\de4dot\obj\x86\debug>de4dot.exe -r f:\input -ro f:\output

未處理的異常: system.io.filenotfoundexception: 未能載入檔案或程式集「de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6」或它的某乙個依賴項。系統找不到指定的檔案。

檔名:「de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6」

在 de4dot_x86.program.main(string args)

=== 預繫結狀態資訊 ===

日誌: 使用者 = chinochan\chino

日誌: displayname = de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6

(fully-specified)

日誌: 初始 privatepath = null

呼叫程式集: de4dot, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6。

===日誌: 此繫結從 default 載入上下文開始。

日誌: 未找到應用程式配置檔案。

日誌: 使用 c:\windows\microsoft.net\framework\v2.0.50727\config\machine.config 的計算機配置檔案。

日誌: 策略後引用: de4dot.cui, version=3.1.41592.3405, culture=neutral, publickeytoken=d3f3ed1e47f67fc6

從這裡看出[de4dot.exe]缺少de4dot.cui.dll,de4dot.cui.dll在"…\de4dot\de4dot.cui\obj\debug\de4dot.cui.dll",複製到[de4dot.exe]所在目錄下

再次執行,依然會提示缺少相關dll,將所有缺少的dll都複製後,則能正確執行

再次cmd執行 「de4dot.exe -r f:\input -ro f:\output」,得到結果:

f:\github\de4dot\de4dot\obj\x86\debug>de4dot.exe -r f:\input -ro f:\output

latest version and source code:

沒有其他反饋,但"f:\output"目錄下沒有任何東西

嘗試將目標dll直接拖到[de4dot.exe]下,得到:

在反混淆由xenocode四級加密的exe檔案時,彈出 "warning: the file isn』t a .net pe file"這樣的提示而終止,反混淆失敗

媽的

De4Dot Reflector 支援多種反混淆

de4dot reflector 支援多種反混淆 官網 原始碼 使用方法 通過cmd命令方式進入 1 f 2 de4dot v3 1 de4dot12306訂票助手.exe 在對應目錄下生成乙個 12306訂票助手 cleaned.exe 然後再採用 reflector.exe 進行反編譯。額外補充...

使用vue cli4快速搭建vue專案demo

使用vue cli4快速搭建乙個可用作demo的專案。無步驟如下 全域性安裝vue指令包 npm install g vue cli 安裝之後,你就可以在命令列中訪問vue命令。你可以通過簡單執行vue version,看看是否列印出當前安裝的vue cli版本號,來驗證它是否安裝成功。使用vue ...

多型 4 虛析構和純虛析構

下面我們通過乙個例子了解一下。include include using namespace std 父類 我們可以從執行結結果中看到,子類cat的析構函式沒有被呼叫,也就意味著我們在子類的建構函式中申請的一塊堆記憶體沒有被釋放。這樣是很不安全的。解決方法 通過虛析構或者純虛析構 將父類的析構函式變...