;复制自身到系统目录下,名为just4test.exe
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
.data
temp db "\just4test.exe",0
msgtext db "copy error!!!",0
msgtitle db "info",0
.data?
path db 256 dup(?)
.code
start:
invoke GetSystemDirectory,addr path,256
invoke szCatStr,addr path,addr temp
invoke GetCommandLine
invoke CopyFile,eax,addr path,FALSE
;是这里错了吗?是不是这样用eax是
;错的,我在这里加过一个测试,弹出对话框显示eax的值,确实是现在程序的名字,
;如果这个参数直接用名字就对,用eax就错
cmp eax,0
jne @f
invoke MessageBox,NULL,addr msgtext,addr msgtitle,MB_ICONERROR
@@:
invoke ExitProcess,NULL
end start
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课