DLL文件是Dynamic Link Library的縮寫,意為動(dòng)態(tài)鏈接庫(kù)。DLL文件一般被存放在C:WindowsSystem目錄下。在Windows中,許多應(yīng)用程序并不是一個(gè)完整的可執(zhí)行文件,它們被分割成一些相對(duì)獨(dú)立的動(dòng)態(tài)鏈接庫(kù),即DLL文件,放置于系統(tǒng)中。當(dāng)我們執(zhí)行某一個(gè)程序時(shí),相應(yīng)的DLL文件就會(huì)被調(diào)用。一個(gè)應(yīng)用程序可有多個(gè)DLL文件,一個(gè)DLL文件也可能被幾個(gè)應(yīng)用程序所共用,這樣的DLL文件被稱為共享DLL文件。
那么DLL文件怎么打開呢?其實(shí),理論上DLL是不能打開的,如果您還是想打開,可以使用一些軟件開發(fā)或反編譯功能,比如DLL函數(shù)查看器,但不建議修改。當(dāng)然也有的DLL是加了殼的,您需要先脫殼才可以。這里小編要提示大家刪除DLL文件或修改DLL文件的內(nèi)容,可能會(huì)導(dǎo)某些程序無(wú)法打開或運(yùn)行錯(cuò)誤,提示沒有DLL文件。因此一般情況下不建議您打開DLL文件或進(jìn)一步對(duì)其進(jìn)行編輯操作。
雖然dll一般不能打開,不過(guò)有時(shí)我們還是可以對(duì)一些DLL文件進(jìn)行反編譯進(jìn)行學(xué)習(xí)。
打開步驟:
1、如果DLL文件已經(jīng)加殼,那么則先需要進(jìn)行脫殼
2、脫殼之后再進(jìn)行反編譯;
3、根據(jù)反編譯軟件不同,有些反編譯軟件可以直接編譯出源碼
最近發(fā)現(xiàn)一個(gè)聲稱具有革命性的DLL反編譯工具:DLL to C。能夠把DLL轉(zhuǎn)換回可編譯的代碼。 并且具有生成數(shù)據(jù)結(jié)構(gòu)和反匯編代碼段的功能。和其它的反編譯或反匯編工具最大的不同是:它生成的代碼是可以直接編譯運(yùn)行的。
以下是它反匯編后的部分代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "stdafx.h" #include "Win32Dll.h" #pragma warning (disable:4730) #pragma warning (disable:4733) #pragma warning (disable:4799) #define DB(b) __asm _emit b __declspec ( naked ) void Win32Dll_CodeStart() { __asm{ MOV EAX, 0x00000001 RETN 0x000C } } __declspec ( naked ) void Win32Dll_TestFun() { __asm{ MOV EAX, DWORD PTR [ESP+0x04] TEST EAX, EAX JZ loc_10001028 PUSH 0x00 PUSH offset [Win32Dll_rdata.m1280_str] PUSH EAX PUSH 0x00 CALL_LONG( DWORD PTR [offset Win32Dll_rdata.mEC_MessageBoxA]) loc_10001028: RET } } |
看起來(lái)還不錯(cuò)。并且這還只是一個(gè)新出的工具,估計(jì)以后會(huì)進(jìn)一步改進(jìn)。感興趣的可以試用一下。