首页
社区
课程
招聘
通过什么样的途径能截取全局的API中断?
2004-7-15 13:14 5085

通过什么样的途径能截取全局的API中断?

2004-7-15 13:14
5085
我写了几个程序,但只能在程序内部中断;即使用API函数的中断方法调试被调试软件,但会在被调试的程序启动新线程后,会重新加载DLL,从而让API入口的CC断点失效。
请问有没有其他的办法?实现象SOFTICE一样的API函数中断?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
打赏
分享
最新回复 (7)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dINO 2004-7-15 13:21
2
0
I want to know,too.
Ding...
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-7-15 14:35
3
0
不会重新加载吧。一个CreateThread难道会改变所有Thunk?
雪    币: 4674
活跃值: (2053)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
oep1 4 2004-7-15 20:33
4
0
最初由 forgot 发布
不会重新加载吧。一个CreateThread难道会改变所有Thunk?


程序就是这样的,我也没办法。我用其他软件检测了一下,居然启动了7个新线程。我还以为是我下的断点在API函数的第一个字节的问题,后来发现不然,确实是重新加载,把我的程序设定的int 3覆盖了。
雪    币: 236
活跃值: (155)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
nOpnOp 2 2004-7-15 21:22
5
0
如果要实现SoftIce那样的功能就要改写动态库对应的物理地址上的内容,而这样做要有特权才能绕开COW机制
雪    币: 4674
活跃值: (2053)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
oep1 4 2004-7-16 20:15
6
0
最初由 nOpnOp 发布
如果要实现SoftIce那样的功能就要改写动态库对应的物理地址上的内容,而这样做要有特权才能绕开COW机制


你好,那我在CC断点上设置只读模式,可以避开上面你所说的“COW”吗?我看过精华上其他人写的帖子,可以用SEH等方法获得特权,但获得特权后如何修改?能说详细点吗?开始我还想用钩子函数动态检测自己的CC点,但这样的话,断点的返回好象是个问题,好象并不能返回自己所设置的断点。
雪    币: 236
活跃值: (155)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
nOpnOp 2 2004-7-17 15:57
7
0
很遗憾不能避开,COW的原理是这样的:系统认为API动态库的代码段是所有程序共享的,所以最初都设置了只读属性,一旦有程序写了API动态库的代码段,那么系统就会为这个修改后的动态库生成一个COPY(正确的说应该是那个已被该写的代码所在的页),专门服务那个改写的进程。这就是所谓的COW机制。为了避开COW,只有在Ring0模式下直接改写该页对应的物理地址上的内容,才不会引发系统的COW机制。
关于COW机制和访问物理内存的内容你可以参考WebCrazy的有关文章。
雪    币: 231
活跃值: (409)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cobra1111 2004-7-17 19:59
8
0
关注ing
游客
登录 | 注册 方可回帖
返回