2010-02-26 100 views
2

有什麼方法可以將我的.dll文件再次反彙編爲機器代碼? 我需要哪些應用程序以及可以恢復多少?反彙編在Delphi中編碼的DLL - 如何啓動?

+0

經驗法則:如果不值得把它交給逆向工程專家,代碼是不值得的。重寫它。 – 2010-02-27 12:54:21

+0

使用反彙編程序並自己進行逆向工程 - 您的要求太高。你似乎並不瞭解這個過程耗時多長。誰會說你不是在這裏問別人來幫助你闖入別人的代碼? – logout 2010-02-28 10:40:35

回答

0

你不能獲得比彙編代碼更多的東西,因爲Delphi本身不像Java或.Net語言,你可以從中獲得更多的信息。

+1

這取決於德爾福版本。有一個Delphi .NET。即使對於Win32,一些舊工具也可以提取資源(如表單),並用除代碼隱藏之外的所有東西恢復它們。 – TrueWill 2010-02-26 18:34:52

+0

你們中的任何一個人都可以看着它並嘗試幫助我嗎? – user282262 2010-02-27 03:59:28

+0

Microsoft有一篇文章描述如何將MSIL編譯爲本地代碼。 (http://msdn.microsoft.com/en-us/library/ht8ecch6(VS.71).aspx)。您可以使用Ngen或商業工具。 Java字節碼也可以編譯爲本地代碼。 – mjn 2010-02-28 17:23:35

2

您需要像IDA Pro一樣的反彙編程序。他們也有free edition。您將取回機器代碼(程序集),並且您應該能夠挑選出對Windows API進行的函數調用。

+0

奧奇,感謝所有的答案:) 你或任何人都可以幫我翻譯整件事,這樣我就可以恢復工作了嗎? – user282262 2010-02-27 03:57:10

9

檢查PE File Explorer,這個工具很棒,使用Delphi構建,並且對Delphi應用程序有特殊的支持。

您可以分析,分解,編輯資源

PE Explorer是檢查自己的軟件的內部 運作最功能豐富 程序, 更重要的是,第三方的Windows 應用並且您沒有源代碼的庫文件爲 。一旦你 選擇了你想要檢查的文件,PE Explorer將分析 文件,並顯示PE文件中包含的PE 標題信息和所有 資源的摘要。 從這裏開始,該工具可以讓您探索 中的一個可執行文件。

alt text http://www.pe-explorer.com/img/scr-pex-disassembler.png

1

如果您丟失了源文件,你真的只需要在「讓您的工作回來」,那麼你可能也開始重新編碼,因爲你不會得到任何有用的東西脫離反編譯器。自Ms-DOS COM文件開始以來,我一直無法從反編譯器中獲取任何可重新編譯的內容(不要與Windows COM混淆!)。

用高級語言編寫的現代文件運行時會拋出優化編譯器,而不包括重建源代碼所需的所有內容。

的例子,它的只是冰山的頂部:

  • 德爾福的優化連接將跳過這不是使用的代碼。有沒有注意到當你想要在一行代碼上放置一個制動點,並且程序啓動時,制動點被忽略,因爲代碼已經被優化了?
  • 德爾福的優化編譯器有做各種各樣的事情與你的代碼的選項:
    • 它可以內聯程序(使他們不再,你寫了他們,他們是在調用時)。
    • 它可以放鬆「for」循環(所以你有一個「for i:= 1 to 10 do something」你現在有「東西;某些東西; ...」
    • 局部變量得到優化,地址得到重用
  • 數據結構與任何一天的規則是一致的。所以你的一個字+ 1字節的結構可能在內存中有4或8個字節,而不是你想象的那樣。
  • 代碼從其他庫導入。一個DLL不是一個DCU。 3行DLL可能實際上從這些「使用」子句中導入了數千行代碼。
+2

我從來沒有見過Delphi編譯器展開循環,我懷疑它確實如此。你可以發表一個例子嗎? – mghie 2010-02-28 10:38:36