第二節 Delphi反向工程
目前 ,Borland沒有提供任何產品用于反編譯可執行(.exe)文件或“Delphi 編譯文件”(.dcu)為原始的程序代碼(.pas)。
Delphi編譯單元:DCU(Delphi compiled unit: DCU)
當一個Delphi工程被編譯或運行時,一個編譯單元(.dcu)文件便產生了。默認情況下,每個單元的編譯版本都存放在獨立的二進制文件中,該文件的文件名與單元文件同名,同時它的擴展名為.DCU。例如:unit1.dcu文件包含有在unit1.pas文件中聲明的代碼和數據。
這意味著如果你有某些資源,如編譯過的組件,你所必須做的是反編譯它并獲得源代碼。錯了,DCU文件格式是非文檔的(所有者格式)并且它可以隨版本的改變而改變。
編譯器之后:Delphi反向工程(After the compiler: Delphi Reverse Engineering)
如果你試圖反編譯一個Delphi可執行文件,有幾件事你應該知道:
Delphi源程序文件通常以兩種文件類型存儲:ASCII代碼文件(.pas、.d
所有被Delphi編譯過的程序都有以下幾個部分:CODE、DATA、BSS、.idata、tls、.rdata、.rsrc。從反編譯的角度來看,最重要的部分是:CODE、.rsrc。在“Adding functionality to a Delphi program"(“在Delphi程序中增加功能”)(譯者加:陸續譯出)文章中討論了關于Delphi可執行格式、類信息和DFM資源的一些有趣的內容:怎樣分配事件給同一個表單中定義的其他事件句柄(handler)處理、怎樣增加你自己的事件句柄(handler)從而在可執行文件中增加代碼改變按鈕的標題。
存放在.exe文件中的各種類型的資源里,RT_RCDATA或application-defined(程序定義)資源(原始數據)擁有編譯前DFM文件所包含的信息。為了從.exe文件中選出DFM數據,我們可以調用EnumResourceNames API函數...關于從.exe文件中選出DFM數據的更多的信息,可以參考:“Coding a Delphi DFM explorer”(“編寫一個Delphi DFM探測器”)。(譯者加:陸續譯出)
新聞熱點
疑難解答
圖片精選