vb編譯器程序密碼
1. 什麼是VB編譯器這樣打開它
所謂編譯器,是一個用來把代碼編譯成應用程序的軟體~
你用的是VB6.0吧?你寫完程序時按「運行」(就是三角形那個按鈕),你的代碼就被自動編譯了,只是編譯出來的應該程序放在一個臨時目錄下。
如果你要的是那個應該程序,就點「文件」,「編譯XXXXX.exe」,然後找個目錄,點確定就成了~~
2. vb怎麼做個vb編譯器
如果你要自己做程序編譯的話很難,就算調用c2.exe和link.exe也沒用,因為VB
在調用之前已經在臨時目錄下生成了一堆看不懂的東西。
但你可以調用VB主程序的命令行來生成程序,如你要生成的程序在D盤根目錄,工程文件為
1.vbp那你可以在CMD里打VB6.exe /make D:\1.vbp
具體的可以參照VB6.exe /?
附:
VB的編譯過程大致如下,當我們在編輯環境中編寫完代碼後,VB調用C2將所有的模塊(包括CLASS)編譯成OBJ文件(能夠為機器語言識別的代碼)。一下是C2的一些編譯參數說明(E文):
- the the name of the prefixed one used for the names of the rowscontaining ' precompilato', one
risen of intermediate tails (from which name of the switch) temporary; these rows are 5 and finish withi suffissi GL, SY, FORMER, IN and DB; they contained are not documented
- f the name of the rows to compile
- W3 warning level 3, level of ' attenzione' dedicating to i warnings
- Gy it qualifies the connection to level of function (function-level linking)
- G5 optimization for the Pentium
- Gs4096 it allows not to insert the code for the control of stack (stack probe) if a function does not
use more than 4096 byte of stack
- dos not documented
- Z1 it removes the name of the bookcase of default from the rows.OBJ
- Fofileobj the name of rows OBJ to generate (rows output)
- Qifdiv it puts in action the corrections for the bug of the division of the Pentium (FDIV bug)
- MILILITER it creates rows eseguibile single-threaded
- basic it indicates the compiler C2 the fact that the compilation it happens for a plan basic
C2完成編譯後,VB會調用LINK.EXE將所有的OBJ文件連接成EXE文件,完成編譯過程。下面是一段命令行演示如何調用LINK.EXE:
LINK C:\Test\Form1.obj C:\Test\Molo1.obj C:\Test\Progetto1.obj C:\Programmi\Microsoft Visual Studio\VB98\VBAEXE6.lib /ENTRY:__ vbaS /OUT:C:\Test\Progetto1.exe /BASE:0x400000 /SUBSYSTEM:WINDOWS, 4.0 /VERSION:1.0 /DEBUG /DEBUGTYPE:CV /INCREMENTAL:NOT /OPT:REF/MERGE:.rdata =.text /IGNORE:4078
對於我們來說這些參數沒有什麼意義,用默認的就行了。這段命令行中並沒有包括輸出函數,如果我們希望輸出函數,可以定義一個.def文件,按照格式加入要輸出的函數列表,然後在命令行後面加上 「/DEF: 文件名」(當然也可以直接加/ EXPORTS參數),再調用命令行編譯,用的denpendency工具查看你就會發現你要輸出的函數了。
Def文件格式的定義:
LIBRARY 程序名稱
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
函數名= ?函數名@函數所在模塊名@@AAGXXZ
…
例:
LIBRARY MyDLL
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
DllRegisterServer= ?DllRegisterServer@SymExp@@AAGXXZ
DllUnregisterServer= ?DllUnregisterServer@SymExp@@AAGXXZ
注意:函數名和模塊名是區分大小寫的
我先用Vb編一個截取C2、LINK命令的程序:
C2:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
LINK:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
生成EXE後把VB98下的c2與LINK剪切到別處,在用這兩個程序代替。運行VB6.exe,隨意打開一個工程,點文件菜單,生成EXE。
不久我編的兩個程序就送給我夢寐以求的文件:
E:\C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夾 (2)\FORM1.FRM" -W 3 -GY -G5 -GS4096 -DOS -ZL -FO"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" -QIFDIV -ML -BASIC
E:\LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB" /ENTRY:__VBAS /OUT:"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.EXE" /BASE:0X400000 /SUBS
這兩個TXT就是VB送給c2以及LINK的命令。
詳細解讀如下:
C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夾 (2)\FORM1.FRM"是c2准備處理的兩個文件。 -W 3 -GY -G5 -GS4096 -DOS -ZL是c2生成OBJ的格式,後邊則是OBJ文件的地址。
LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ"是源文件。"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB"是轉換庫。後面是EXE文件地址及格式
3. 什麼是VB反編譯器
所謂VB反編譯器就是將用VB編寫生成的exe文件轉換為源程序的工具
但沒見過好用的
你從這個反字就能看出來