bpl反編譯
『壹』 delPhi有反編譯工具嗎
反向工程一直被認為是技術奇才的專有藝術,需要熟悉匯編語言和調試器。下面幾個Delphi反編譯器允許任何人反編譯大多數Delphi可執行文件,即使只有有限的技術知識。 如果你對Delphi程序反向工程感興趣,我建議你看一看以下幾個「反編譯器」:DeDeDeDe是一個非常快的程序,用於分析Delphi編譯的可執行文件。反編譯之後,DeDe會提供以下信息:所有的目標dfm文件。你可以用Delphi打開並編輯它們; 帶有良好的注釋的ASM代碼的所有發布的方法,它涉及字元串、輸入函數調用、類方法調用、單元的組件、Try-Except和Try-Finally塊。默認情況下,DeDe僅僅只獲得已發布方法的源代碼,但如果你通過使用Tools | Disassemble Proc菜單知道RVA偏移量的話,你也可以處理可執行文件中的其他過程。 大量的附加信息。 你可以創建一個帶有所有的dfm、pas、dpr文件的Delphi工程的文件夾。註:pas文件包含上面提及的被良好注釋過的ASM代碼。他們不能被再編譯!RevendeproRevendepro可以找到程序中幾乎所有的結構(類、類型、過程等),並生成pascal表達式、過程則以匯編程序的形式寫出來。由於匯編程序的某些限制,生成的結果不能被在編譯。這個反編譯器的源代碼可以免費獲得。不幸的是,這是唯一一個我不能使用的反編譯器—當試圖用它反編譯某些Delphi可執行文件時,總提示異常。 MRIP這個對用途文件分割器可以從其它文件中尋找和摘取文件。MRIP分割100多種文件格式。對我們而言,最重要的是MRipper可以反編譯任何Delphi可執行文件。該工具可以從Delphi應用程序中摘取所有的資源:cursors(游標)、icons(圖標)、dfm文件、pas文件和其他資源。pas文件不包含事件過程執行。MRIP是一個DOS工具。 DfmExplorer 以下是DfmExplorer的說明(包括原始資料):通過調用Win32 API的「LoadLibrary」或「LoadLibraryEx」函數在內存中載入可執行模塊(EXE\DLL\BPL\DPL)。 通過Win32 API的「EnumResourceName」函數找尋RCDATA資源。 載入每個發現的DFM塊,解碼它並以表的形式(包括它們的名稱)存儲在內存中。 在程序的主窗口我們可以以文本方式可視化所有載入可執行文件的所有的DFM。 最後,程序可以保存到DFM選擇的磁碟,作為ASCII文件(.RC)或作為二進制塊(DAT)連接到可執行文件中。 Exe2Dpr如果你試圖放鬆你的工程源代碼,這個Delphi工程源代碼救助器可以挽救丟失的源碼部分。救助器生成所有的帶已分配屬性和事件的工程表單和數據模塊。生成的事件過程沒有主程序(它不是反編譯器),但又在可執行文件中的代碼地址。這個工具沒有GUI—它使用命令行的形式:'exe2dpr [-o] exeFile'。工程源代碼在當前目錄創建。
『貳』 怎樣反編加過密的Py腳本吖
你希望得到什麼結果?
如果你想反編譯後得到delphi源碼,不用考慮了,不可能。 Delphi 反編譯工具
反向工程一直被認為是技術奇才的專有藝術,需要熟悉匯編語言和調試器。下面幾個Delphi反編譯器允許任何人反編譯大多數Delphi可執行文件,即使只有有限的技術知識。
如果你對Delphi程序反向工程感興趣,我建議你看一看以下幾個「反編譯器」:
DeDe
DeDe是一個非常快的程序,用於分析Delphi編譯的可執行文件。反編譯之後,DeDe會提供以下信息:
所有的目標dfm文件。你可以用Delphi打開並編輯它們;
帶有良好的注釋的ASM代碼的所有發布的方法,它涉及字元串、輸入函數調用、類方法調用、單元的組件、Try-Except和Try-Finally塊。默認情況下,DeDe僅僅只獲得已發布方法的源代碼,但如果你通過使用Tools | Disassemble Proc菜單知道RVA偏移量的話,你也可以處理可執行文件中的其他過程。
大量的附加信息。
你可以創建一個帶有所有的dfm、pas、dpr文件的Delphi工程的文件夾。註:pas文件包含上面提及的被良好注釋過的ASM代碼。他們不能被再編譯!
Revendepro
Revendepro可以找到程序中幾乎所有的結構(類、類型、過程等),並生成pascal表達式、過程則以匯編程序的形式寫出來。由於匯編程序的某些限制,生成的結果不能被在編譯。這個反編譯器的源代碼可以免費獲得。不幸的是,這是唯一一個我不能使用的反編譯器—當試圖用它反編譯某些Delphi可執行文件時,總提示異常。
MRIP
這個對用途文件分割器可以從其它文件中尋找和摘取文件。MRIP分割100多種文件格式。對我們而言,最重要的是MRipper可以反編譯任何Delphi可執行文件。該工具可以從Delphi應用程序中摘取所有的資源:cursors(游標)、icons(圖標)、dfm文件、pas文件和其他資源。pas文件不包含事件過程執行。MRIP是一個DOS工具。
DfmExplorer
以下是DfmExplorer的說明(包括原始資料):
通過調用Win32 API的「LoadLibrary」或「LoadLibraryEx」函數在內存中載入可執行模塊(EXE\DLL\BPL\DPL)。
通過Win32 API的「EnumResourceName」函數找尋RCDATA資源。
載入每個發現的DFM塊,解碼它並以表的形式(包括它們的名稱)存儲在內存中。
在程序的主窗口我們可以以文本方式可視化所有載入可執行文件的所有的DFM。
最後,程序可以保存到DFM選擇的磁碟,作為ASCII文件(.RC)或作為二進制塊(DAT)連接到可執行文件中。
Exe2Dpr
如果你試圖放鬆你的工程源代碼,這個Delphi工程源代碼救助器可以挽救丟失的源碼部分。救助器生成所有的帶已分配屬性和事件的工程表單和數據模塊。生成的事件過程沒有主程序(它不是反編譯器),但又在可執行文件中的代碼地址。這個工具沒有GUI—它使用命令行的形式: 'exe2dpr [-o] exeFile '。工程源代碼在當前目錄創建。如果你想覆蓋當前目錄的任何已存在的文件,就可以使用選項 '-o '。
目前 ,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、.dpr)和資源文件(.res、.rc、.dfm、.dcr)。Dfm文件包含表單中所容納的對象的詳細資料(屬性)。當創建一個可執行文件時,Delphi拷貝.dfm文件中的信息到已完成的.exe代碼文件。表單文件描述了表單中的每個組件,包括所有穩定的屬性值。每當我們改變表單的位置、按鈕的標題或為組件指派一個事件過程時,Delphi就會在DFM文件中記下這些改變(不是事件過程的代碼—它是存放在pas/dcu文件中)。為了從可執行文件中得到 'dfm ',我們需要理解什麼類型的資源被存放在Win32可執行文件中。
所有被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探測器」)。(譯者加:陸續譯出)