【文章标题】: 文件运行后自删除的汇编代码
【文章作者】: 孤独小狼
【作者主页】: http://hi.baidu.com/lonew0lf/
【作者QQ号】: 215371256
【下载地址】: 自己搜索下载
【操作平台】: winxp sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【链 接】: http://bbs.pediy.com/showthread.php?t=101984
--------------------------------------------------------------------------------
【详细过程】
在论坛找过,没找到,自己写了个,送给和我一样刚开始学习的兄弟!
.386
.model flat,stdcall
option casemap:none
include D:\masm32\include\windows.inc
include D:\masm32\include\user32.inc
includelib D:\masm32\lib\user32.lib
include D:\masm32\include\kernel32.inc
includelib D:\masm32\lib\kernel32.lib
include D:\masm32\include\comdlg32.inc
includelib D:\masm32\lib\comdlg32.lib
.data?
hBatFile dd ?
szDelFileName db MAX_PATH dup (?)
dwBytesWrite dd ?
szCommand1 db MAX_PATH dup (?)
.const
szCommand2 db 'del ',0
szCommand3 db ' del 1.bat ',0
szFileName db '1.bat',0
szError db '错误',0
szErrorCreatFile db '无法创建新文件',0
.code
start:
invoke GetModuleFileName,NULL,offset szDelFileName,sizeof szDelFileName ;获取程序本身的完整路径及文件名,GetModuleFileName这个函数我找了半天才找到的,很不容易啊!
invoke lstrcat,offset szCommand1,offset szCommand2 ;将命令和路径、文件名连接起来
invoke lstrcat,offset szCommand1,offset szDelFileName
invoke lstrcat,offset szCommand1,offset szCommand3
invoke CreateFile,offset szFileName,GENERIC_WRITE,FILE_SHARE_READ,0,CREATE_ALWAYS,\
FILE_ATTRIBUTE_NORMAL,0 ;在程序同目录下写入一个BAT文件
.if eax==INVALID_HANDLE_VALUE ;如果文件创建失败,出来提示,这个只是测试用,实际代码中要删除掉
invoke MessageBox,NULL,offset szErrorCreatFile,offset szError,MB_OK or MB_ICONEXCLAMATION
ret
.endif
mov hBatFile,eax
xor eax,eax
mov dwBytesWrite,eax
invoke WriteFile,hBatFile,offset szCommand1,sizeof szCommand1,offset dwBytesWrite,NULL
;向BAT文件中写入命令
invoke CloseHandle,hBatFile
invoke WinExec,offset szFileName,SW_HIDE ;以隐藏方式运行BAT文件
invoke ExitProcess,NULL
end start
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年11月19日 1:24:41
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)