古詩詞大全網 - 成語解釋 - VB反編譯還原代碼 求助

VB反編譯還原代碼 求助

如果說 VB3、VB4 還有可能的話,那麽 VB5、VB6 反編譯就是完全的癡人說夢了,VB6 已經不是純粹的解釋性語言了,根本不可能反編譯出完整的源代碼,對於這種語言寫出來的程序,只能獲得中間語言或低級語言。壹般來說 VB6 都是 P 代碼,而 P-Code 的代碼逆向回來只能自己看,機器是識別不了的。

舉個例子:

比如在 VB6 中有壹句代碼 : MsgBox "Decompile Test."

那麽反編譯出來的結果就是:

(代碼太長不貼,這裏貼主要的)

...

mov dword ptr [ebp-58], 004012E4 ; 這裏把 "Decompile Test."的地址弄進去了。

...

call dword ptr [<&MSVBVM60.__vbaVarDup>]; 可以清楚的看出來,復制了壹份變量的句柄。因為VB裏字符串指向的是內存地址。

...

call dword ptr [<&MSVBVM60.#595>] ; 這壹句彈出了MsgBox.這裏如果跟進去的話是壹大堆API 。

...

所以正常反編譯(學匯編語言和計算機編譯原理去吧)的話,看到段了就會知道這是壹個 Msgbox 函數,但是具體顯示的內容是什麽,那是根本看不出來的。

P.S. 針對樓上[妳不懂就別亂說]說的插壹嘴,未加殼的 .NET 為何能被反編譯出源代碼,那是因為 .NET 是托管,而托管有中間語言,所以它的源代碼被編譯成 msil 這種中間語言而非像 VB6 直接編譯成機器語言了。