首页
社区
课程
招聘
[旧帖] 请教一个空中断处理函数 0.00雪花
发表于: 2009-11-8 22:29 3208

[旧帖] 请教一个空中断处理函数 0.00雪花

2009-11-8 22:29
3208
下面的是我的中断处理函数my_interrupt_hook,其中只调用了findstack
VOID __stdcall findstack()
{
        KdPrint(("my trap gate !...\n"));
}
__declspec(naked) VOID my_interrupt_hook()
{
        __asm
        {
                pushad
                pushfd
                call        findstack
                popfd
                popad
                iretd
        }
}
上面的中断处理函数通过驱动,在IDT0x22号增加int 0x22中断,
idt_entries[34].LowOffset = (unsigned short)my_interrupt_hook;
                idt_entries[34].HiOffset = (unsigned short)((unsigned long)my_interrupt_hook >> 16);
                idt_entries[34].selector = (unsigned short)0x8;
                idt_entries[34].segment_type = (unsigned char)0xE;
                idt_entries[34].system_segment_flag = (unsigned char)0x0;
                idt_entries[34].DPL = (unsigned char)0x3;
                idt_entries[34].P = (unsigned char)0x1;

但是在应用层使用
......
__asm int 0x22
......
当执行到__asm int 0x22之后,确实进入了中断处理,但回来之后就直接报错退出了..没有继续执行下一条指令......
我的目的就是:    __asm int 0x22到我自己构造的中断走一圈,打印出信息,然后回到应用程序继续执行下一条语句,,就像什么事也没有发生....

希望各位帮我指出哪里有问题...谢谢....

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
原ISR可能要处理一些规格的东西,你这里没调用原来的

不确定是不是这原因,我都是看书,自己懒得动手
2009-11-8 23:18
0
雪    币: 238
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对不起楼上的朋友...我这个是自己制造的一个陷阱门..是不会调用其它的中断的...
2009-11-8 23:26
0
雪    币: 303
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
加个异常处理!
2009-11-9 02:21
0
雪    币: 238
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
..........
2009-11-9 02:59
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
兄台,知道了。要这样的
push fs
call xx
pop
2009-11-9 15:39
0
游客
登录 | 注册 方可回帖
返回
//