阅读:1191回复:3
再问一个有关被中断程序的eip问题?
再问一个有关被中断程序的eip问题?
我想拦截win32下的系统调用,用int3来做,与debug思想比较接近! 把系统调用人口的后面一句改成0xcc(int3),自己拦截中断,发现问题比较大! 1,如何取得被中断程序的eip,intel的文档中说明,eip是最后一个压入堆栈的,在中断处理过程中,我首先 pop eax ,这时eax的值是不是就是被中断程序的eip? 2,int3在系统中十分频繁,不好跟踪,要确定一个中断是不是自己下的,能不能用线程id+eip的方式来确认? |
|
沙发#
发布于:2004-04-12 21:21
用调试API来做,很方便
|
|
|
板凳#
发布于:2004-04-14 11:16
在你的int 3例程结束时用ret退出,cpu会利用堆栈里的数据恢复中断前的EIP,EFLAGS,等环境,你遇到什么问题呢?
|
|
地板#
发布于:2004-04-14 22:56
CPU是这样压栈的。。 CS:IP 6个字节 你自己慢慢抬出来吧 ;)
例: pop eax. pop bx bx = CS eax = EIP |
|
|