Вот, приволок из дома. Хватает в триггер некоторые функции int 21h и выводит дебаг по регистрам ax,bx,cx,dx. Ею я влет получил номер функции pkunzip'а, которой он пароль запрашивает.
| Цитата | .286 ; Команды процессора 286+ незащищенного режима HookedVector equ 21h ; Перехватываем вектор 21h - DOS SoundFreq equ 3 ; Будем издавать звук каждые SoundFreq секунд cseg segment byte 'code' assume cs:cseg org 100h ; Обычный PSP com - программы begin: jmp Iniz ; Обойдем резидентный код messagekey proc near pushf ; Сохраним флаги вызывающей программы cmp ah,40h jz @OurFunction ; cmp ah,3Dh ; jz @OurFunction ; cmp ah,3Ch ; jz @OurFunction cmp ah,42h jz @OurFunction ; cmp ah,3Fh ; jz @OurFunction ; cmp ah,08h ; jnz @NotOurFunction jmp short @NotOurFunction @OurFunction: ; Сохраним все регистры pusha push ds push es ; Издадим звук call Sound call Show_Info pop es pop ds popa @NotOurFunction: popf ; Восстановим флаги db 0eah ; код команды jmp far Old_21H dd ? ; На предидущий обработчик int 21h messagekey endp Show_Info proc near mov word ptr cs:RegsInfo+3,ax mov word ptr cs:RegsInfo+11,bx mov word ptr cs:RegsInfo+19,cx mov word ptr cs:RegsInfo+27,dx push cs pop ds mov cx,4 mov bx,offset RegsInfo+3 @@GetHexStr: mov ax,word ptr [bx] mov di,bx call HexChar add bx,8 loop @@GetHexStr mov cx,8*4 xor di,di mov si,offset RegsInfo push 0B800h pop es cld @@OutRegs: lodsb mov ah,09 stosw loop @@OutRegs xor ax,ax int 16h retn RegsInfo db 'AX= ? BX= ? CX= ? DX= ? ' ; now ds:dx = point to filename Show_Info endp HexChar proc near pusha mov cx,4 mov bx,offset TabHex @GetHex: rol ax,4 push ax and al,0fh xlat mov [di],al inc di pop ax loop @GetHex popa retn TabHex db '0123456789abcdef' HexChar endp Sound proc near pusha mov al,0b6h out 43h,al mov ax,330 out 42h,al mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,al xor cx,cx @waitt: loop @waitt mov al,ah out 61h,al popa retn mov ax,400 @@pause: xor cx,cx @pause: loop @pause dec ax jnz @@pause retn Sound endp Iniz proc assume ds:cseg mov ax,(35H shl 8) + HookedVector int 21h ; Get old HookedVector to es:bx mov word ptr Old_21h,bx mov word ptr Old_21h+2,es mov dx,offset MessageKey mov ah,25h int 21H ; Set new Vector mov dx,offset Iniz int 27H ; Terminate and Stay Rezident Iniz endp cseg ends end begin
|
|