📄 procgen.asm
字号:
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include windows.inc
include kernel32.inc
includelib kernel32.lib
includelib user32.lib
.data?
lpBuf db 10 dup(?)
lpStr db 1024 dup(?)
.data
szTrimC db '" ', 0
szFmt db "dd 0%.8xh ; %s",0
szFuncs db "ExitProcess",0
db "LoadLibraryA",0
db "ShellExecuteA",0
db "CloseHandle",0
db "CreateDirectoryA",0
db "CreateFileA",0
db "GetSystemDirectoryA",0
db "GetTempFileNameA",0
db "GetTempPathA",0
db "GetWindowsDirectoryA",0
db "GlobalAlloc",0
db "WriteFile",0
db "DeleteFileA",0
db "GetModuleFileNameA",0
db "wsprintfA",0
db "SetFileAttributesA",0
db "GetCurrentDirectoryA",0
db "RegCreateKeyA",0
db "RegSetValueExA",0
db 0
.code
Write proc uses ebx lpszText: DWORD
LOCAL dwWritten: DWORD
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov ebx, eax
invoke lstrlen, lpszText
mov edx, eax
invoke WriteFile, ebx, lpszText, edx, addr dwWritten, NULL
ret
Write endp
WriteLn proc lpszText: DWORD
LOCAL ln: DWORD
invoke Write, lpszText
mov ln, 0D0Ah
invoke Write, addr ln
ret
WriteLn endp
start:
mov edi, offset szFuncs
@next:
cld
mov edx, edi
xor eax, eax
or ecx, -1
repnz scasb
mov ebx, edx
mov eax, edx
xor edx, edx
@calc_hash:
rol edx, 3
xor dl, byte ptr[eax]
inc eax
cmp byte ptr[eax], 0
jnz @calc_hash
invoke wsprintf, offset lpBuf, offset szFmt, edx, ebx
invoke WriteLn, offset lpBuf
cmp byte ptr[edi], 0
jnz @next
invoke ExitProcess, 0
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -