xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1191回复:3

再问一个有关被中断程序的eip问题?

楼主#
更多 发布于:2004-04-12 20:50
再问一个有关被中断程序的eip问题?

我想拦截win32下的系统调用,用int3来做,与debug思想比较接近!

把系统调用人口的后面一句改成0xcc(int3),自己拦截中断,发现问题比较大!

1,如何取得被中断程序的eip,intel的文档中说明,eip是最后一个压入堆栈的,在中断处理过程中,我首先 pop eax ,这时eax的值是不是就是被中断程序的eip?

2,int3在系统中十分频繁,不好跟踪,要确定一个中断是不是自己下的,能不能用线程id+eip的方式来确认?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-04-12 21:21
用调试API来做,很方便
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
BlackJack
驱动牛犊
驱动牛犊
  • 注册日期2004-02-25
  • 最后登录2007-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-14 11:16
在你的int 3例程结束时用ret退出,cpu会利用堆栈里的数据恢复中断前的EIP,EFLAGS,等环境,你遇到什么问题呢?
yangmin26
驱动小牛
驱动小牛
  • 注册日期2003-02-22
  • 最后登录2012-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-14 22:56
CPU是这样压栈的。。  CS:IP  6个字节  你自己慢慢抬出来吧 ;)

例:
pop eax.
pop bx

bx = CS
eax = EIP
YM KILL YOU
游客

返回顶部