2012-04-18 77 views

回答

1

號的compliation過程破壞所有元數據,包括變量名稱和優化過程使得它很難恢復,即使原始源的僞代碼副本。

這裏是一個高度簡化。例如比方說,你寫的「富++」,其中foo是一個int根據不同的編譯器,這可以編譯成以下任何一種:

  • inc dword ptr [esp+12h] - 富保持爲本地棧上
  • inc dword ptr [00000f00h] - foo是一個堆變量
  • add dword ptr [00000f00h], 1 - 另一種方式來增加
  • mov eax, dword ptr [esp+12h]; inc eax - 從到EAX堆棧移動,然後增加
  • 等...

可能性實際上層出不窮。

最好的辦法是看看像Hex-Rays Decompiler這樣的東西,雖然它並不便宜。它與IDA協同工作來生成僞C代碼,您可以使用它來發現特定功能和例程的工作方式。

+0

也看看這個問題:http://stackoverflow.com/questions/273145/is-it-possible-to-decompile-a-windows-exe-or-at-least-view-the-assembly – Polynomial 2012-04-18 19:40:24

+0

我必須選擇哪個選項:新的彙編數據庫面板? – SWE 2012-04-18 19:46:01

+0

我不明白這個問題。你使用什麼軟件?你想做什麼? – Polynomial 2012-04-18 19:46:45