─[]───────────────────────────────────────────────────────────────────────[2B]─
О' int 1.
Старый, старый, int 1.
Мы под ним, кажись, сидим.
Аверам и не вдомек,
что его уж вышел срок.
Посмотри на Дохтор Вэб...
Урони слезу скупую, доставая из штанин, уж совсем не паспортину.
Поимей его как клячу - эт не трудная задача.
Он имеется во всем, не спасет его condon.
Хочешь в пуш-ф(pushf), хочешь в попу(popf) - не видать ему Европы.
Hо Данил/off даже рад, что его имеют в зад.
Он окошки все малюет, цифру 32 на них рисует.
%удожник.
AVP всех удалей и быть может всех резвей.
Он команды аки знает и чего-то замечает.
И на пуш-ф и на попе у него затычка есть.
Всех затычек и не счесть...
И ss он даже знает, и префиксы сегментов уважает,
Hо зачем все эти муки, эти сложные науки?
Десяток строк и все облом,
см. про спасенье и condon.
Hадоело, закругляюсь, см. ниже простой пример.
Просто, дешево, сердито, антитрасинг int 1.
Применимо для защиты от бездарных трасишей.
* * * The End * * *
────[ANTI_45.ASM]────[START]───────────────────────────────────────────────────
.model tiny ;trace - MustDie (c)2b
.code
.386
org 100h
start:
mov ax,3521h ; int 13 or 21
int 21h
mov word ptr ijmp+2,es
mov word ptr ijmp,bx
lea dx,int4trace
mov ah,25h
int 21h
lea dx,lastbyte
int 27h
int4trace:
push ds
push si
xor si,si ; si = 0
mov ds,si ; ds = 0
lds si,[si+4] ; ds:si - seg:ofs int1
push word ptr [si] ; save 1st word
mov [si],word ptr 0FEEBh ; replace 1st word with jmp $ or hlt
pop word ptr [si] ; restore 1st word
pop si
pop ds
db 0eah
ijmp: dw ?,?
lastbyte:
end start
────[ANTI_45.ASM]────[END]─────────────────────────────────────────────────────
────[ANTI_50.ASM]────[START]───────────────────────────────────────────────────
.model tiny ;trace - MustDie (c)2b
.code
.386
org 100h
start:
mov ax,3521h ; int 13 or 21
int 21h
mov word ptr ijmp+2,es
mov word ptr ijmp,bx
lea dx,int4trace
mov ah,25h
int 21h
lea dx,lastbyte
int 27h
int4trace:
push ds
push si
xor si,si ; si = 0
mov ds,si ; ds = 0
lds si,[si+4] ; ds:si - seg:ofs int1
push dword ptr [si] ; save 1st dword
mov [si],dword ptr 2cah ; replace 1st dword with
; retf 2 - trace flag off
pop dword ptr [si] ; restore 1st dword
pop si
pop ds
db 0eah
ijmp: dw ?,?
lastbyte:
end start
────[ANTI_50.ASM]────[END]─────────────────────────────────────────────────────
────[ANTI_55.ASM]────[START]───────────────────────────────────────────────────
.model tiny ;trace - MustDie (c)2b
.code
.386
org 100h
start:
mov ax,3521h ; int 13 or 21
int 21h
mov word ptr ijmp+2,es
mov word ptr ijmp,bx
lea dx,int4trace
mov ah,25h
int 21h
lea dx,lastbyte
int 27h
NewInt1:
;-----------------------------
jmp $ ; висим
;---------- or ---------------
; mov eax,0f000fff0h ; а почему не просто jmp f000:fff0 ?
; iret ; а потому, что так прикольней,
; он сам виноват... ;)
;---------- or ---------------
; retf 2 ; trace flag off
;-----------------------------
int4trace:
push eax ; or simple push ax ?
push ds
xor ax,ax
mov ds,ax ; ds = 0
push cs
lea ax,NewInt1
push ax
pop eax ; eax = NewInt1
xchg eax,ds:[4] ; set new int1 (NewInt1)
; <- if trace then executing (NewInt1)
xchg eax,ds:[4] ; restore old int1
pop ds
pop eax ; or simple pop ax ?
db 0eah
ijmp: dw ?,?
lastbyte:
end start
────[ANTI_55.ASM]────[END]─────────────────────────────────────────────────────
PS:
Зная мнительность и повышенное САМО_со_МHЕHИЕ [ТИМА авп], будем ожидать
появления в базе авп новых троянов под названием: Trojan.AntiAVP 45,50,55
или поскромнее Trojan.Antitrace 45,50,55
2 FRiZER:
Хорошая твоя идейка и статья была в MooN_BuG, Issue 7, Sep 1998, file 005.
Я прямо плакал когда авп, на простой резидентик, сказал ANTIAVP aka Antitrace
2All:
Смешно? Да нет, пожалуй, это уже верх маразма.
(c) 2b