2009-06-09 85 views
2

我需要從經典的win32 exe/dll文件中提取代碼(但不是數據!)。很明顯,我只能通過提取代碼段內容來做到這一點(因爲代碼段也包含數據 - 例如跳轉表),而且我需要編譯器的幫助。從exe/pdb獲取有關可執行代碼的信息

* .map文件很好,但它們只包含函數的地址,也就是說我能做的最安全的事情就是從那個地址開始直到第一次返回/跳轉指令爲止(因爲函數的一部分可以提到數據)

* .pdb文件更好,但我不確定使用什麼工具來提取這樣的信息 - 我看了一下DbgHelp和DIA SDK,後者似乎是正確的工具,但它看起來不是很簡單。所以我的問題:

  1. 據你所知,有可能只通過DbgHelp提取關於代碼/數據位置(地址+長度)的信息?
  2. 如果DIA SDK是唯一的方法,那麼我應該怎樣稱呼這些信息? (COM的東西很重)
  3. 有沒有其他方法?

當然,我最關心的是關於Visual Studio,C/C++源代碼編譯。

感謝您的任何提示。

回答

0

好吧,我只是碰巧看到前一天DIA is a lot easier to use from C#(鏈接到一個簡單的程序源代碼);另一個不斷出現在我的谷歌搜索中的程序是PDB Cracker,它也有源代碼,可能與您的預期應用程序更相關。