理論上,任何軟件都可以被反編譯,只是時(shí)間問(wèn)題。與匯編、C語(yǔ)言比較VB6屬于比較難反編譯的了,如果不是做商業(yè)軟件,學(xué)一種編程語(yǔ)言的作用是能方便工作,提高效率。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)港口,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
VB6編譯器確實(shí)過(guò)時(shí)了,而且VB6有自身不足,但是一般軟件還是可以做的,而且比VB.net要小很多,VB.net的優(yōu)點(diǎn)是很多東西都是現(xiàn)成的,比如菜單,可以直接設(shè)置出各種效果來(lái),用VB6就要掌握API和自繪技術(shù),或者借用第三方控件。但是通過(guò)這樣可以提高自己的編程水平,缺點(diǎn)是開(kāi)發(fā)效率低。
如果是vb 的話(huà),基本沒(méi)有必要加殼,因?yàn)関b是不能反編譯的,反編譯出來(lái)的都是匯編碼,破解的話(huà)不比重寫(xiě)一個(gè)新的簡(jiǎn)單多少。
vb.net可以反編譯,一般都是混淆器,.net加殼很多都會(huì)不穩(wěn)定,慎用。
無(wú)論加不加殼,代碼帶內(nèi)存中運(yùn)行都是一樣的,都可以通過(guò)內(nèi)存調(diào)試的方式破解。
最安全的加密方式是虛擬機(jī),基本上無(wú)解,不過(guò),代價(jià)嘛。。。。。。
VB是直接編譯成機(jī)器代碼的,基本不用顧慮被他人反編譯的問(wèn)題。
如果你說(shuō)的是VB.NET,那么它是被編譯成中間語(yǔ)言的,則可以使用VS提供的一個(gè)混淆器阻止他人反編譯。
如果說(shuō) VB3、VB4 還有可能的話(huà),那么 VB5、VB6 反編譯就是完全的癡人說(shuō)夢(mèng)了,VB6 已經(jīng)不是純粹的解釋性語(yǔ)言了,根本不可能反編譯出完整的源代碼,對(duì)于這種語(yǔ)言寫(xiě)出來(lái)的程序,只能獲得中間語(yǔ)言或低級(jí)語(yǔ)言。一般來(lái)說(shuō) VB6 都是 P 代碼,而 P-Code 的代碼逆向回來(lái)只能自己看,機(jī)器是識(shí)別不了的。
舉個(gè)例子:
比如在 VB6 中有一句代碼 : MsgBox "Decompile Test."
那么反編譯出來(lái)的結(jié)果就是:
(代碼太長(zhǎng)不貼,這里貼主要的)
...
mov dword ptr [ebp-58], 004012E4 ; 這里把 "Decompile Test."的地址弄進(jìn)去了。
...
call dword ptr [MSVBVM60.__vbaVarDup]; 可以清楚的看出來(lái),復(fù)制了一份變量的句柄。因?yàn)閂B里字符串指向的是內(nèi)存地址。
...
call dword ptr [MSVBVM60.#595] ; 這一句彈出了MsgBox.這里如果跟進(jìn)去的話(huà)是一大堆API 。
...
所以正常反編譯(學(xué)匯編語(yǔ)言和計(jì)算機(jī)編譯原理去吧)的話(huà),看到段了就會(huì)知道這是一個(gè) Msgbox 函數(shù),但是具體顯示的內(nèi)容是什么,那是根本看不出來(lái)的。
P.S. 針對(duì)樓上[你不懂就別亂說(shuō)]說(shuō)的插一嘴,未加殼的 .NET 為何能被反編譯出源代碼,那是因?yàn)?.NET 是托管,而托管有中間語(yǔ)言,所以它的源代碼被編譯成 msil 這種中間語(yǔ)言而非像 VB6 直接編譯成機(jī)器語(yǔ)言了。
真正反編譯是不可能的,不管是P代碼還是本機(jī)代碼,不加殼也反編譯不了,至于什么.net反編譯,更是癡人說(shuō)夢(mèng)!網(wǎng)上雖有一些反編譯軟件,但是頂多把你用了哪些控件找出來(lái),至于代碼就無(wú)能為力了