|

Радиоперехват
Xakep, номер #036, стр. 036-052-3
Z.: Я, пожалуй, затрону тему клонирования.
D.J.: МММ... Я думаю, соображающий народ понял.
Z.: Auf wiedersehen!!!
D.J.: Good Luck, Man!!! На этом мы заканчиваем нашу трансляцию в пространственном эфире, до скорых встреч, mein liebe friends!!!
ИСХОДНИК
Compiling:
tasm32 /m /ml slow.asm
tlink32 /Tpe /c /x /aa slow.obj
Source code: slow.asm
includelib import32.lib
extrn ExitProcess:near
.486p
model flat
.data
db ?
.code
start:
call j1
j1: pop edi ;Считываем EIP
lea esi,[edi+j2-j1] ;В esi - адрес точки входа для
;нового обработчика INT 3
push esp
push edx
sidt [esp+2h] ;Сохраняем значение IDTR
pop edx
pop ebx ;и отправляем его в ebx
xchg [ebx+18h],si ;Перехват INT 3h с одновременным занесением
rol esi,10h ;адреса старого обработчика
xchg [ebx+1eh],si ;в esi
int 3
push 0
call ExitProcess
j2: mov [ebx+1eh],si ;Точка входа в INT 3
shr esi,10h
mov [ebx+18h],si
xor ecx,ecx
push 0Fh ;Выделяем 4-килобайтовую страницу
;в системной области памяти
push ecx
push -1h
push ecx
push ecx
push ecx
inc ecx
push ecx
push ecx
ter: db 0CDh,20h,53h,00h,01h,00h
;VMMCall Page allocate
add esp,20h
lea esi,[edi+j3-j1] ;esi - адрес обработчика
;прерываний от таймера
xchg edi,eax
push edi
cld
push j4-j3
pop ecx
rep movsb ;Записываем обработчик в выделенную память
cli ;Запрет прерываний от внешних устройств
pop ecx
add ebx,280h
xchg [ebx],cx ;Перехватываем INT 50h, на которое в Windows
rol ecx,10h ;повешен обработчик IRQ0, то
xchg [ebx+6h],cx ;есть прерываний от таймера
rol ecx,10h
mov [edi+j7-j4+1h],ecx ;Сохраняем адрес старого обработчика
iretd
j3: pushfd ;сохраняем регистр флагов и EAX
push eax
call j5
j5: pop eax
dec byte ptr ss:[eax+jbyte-j5]
jnz j6
mov byte ptr ss:[eax+jbyte-j5],3h
;проглатываем каждое третье прерывание
mov al,60h ;Включаем аппаратное прерывание от
;таймера в режиме без приоритетов
out 20h,al
pop eax
popfd
iret
j6: pop eax
popfd
j7: push 088888888h ;Переход на предыдущую
;процедуру обработки прерывания
;в это поле будет
;записан адрес старого обработчика
ret
jbyte: db 1h
j4:
end start
Назад на стр. 036-052-2 Содержание
|