div除法溢出之后, 会调用中断0, 显示Divide overflow,
我们修改中断向量表里对应的0号中断的处理地址, 将我们的代码执行起来, 达到hook的目的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
assume cs:code code segment start: ;写入新的int 0地址 mov ax,0 mov es,ax mov word ptr es:[0*4],0200h mov word ptr es:[0*4+2],0 ;写入新的int 0中断过程的ShellCode mov ax,cs mov ds,ax mov si,offset display_start mov ax,0 mov es,ax mov di,0200h mov cx,offset display_end - offset display_start cld rep movsb jmp display_end ;跳转到除法溢出代码 display_start: jmp $+0ch ;跳转到mov ax,0b800h db 'hook int 0' mov ax,0b800h mov ds,ax mov ax,0 mov es,ax mov si,0202h ;字符串的位置 mov bx,160*3 ;在屏幕上第三行显示 mov cx,0Ah ;字符串10位 s: mov al,es:[si] inc si mov ah, 0ch ;红底黑字 mov ds:[bx],ax add bx,2 loop s mov ax,4c00h ;退出程序 int 21h display_end:nop ;div除法溢出 mov ax,1000h mov bh,01h div bh ;退出程序 mov ax,4c00h int 21h code ends end start end |
显示hook int 0, 哈哈
转载请注明:exchen's blog » 16位汇编 Hook int 0实例