关于截获API函数的问题,懂的和不懂的人都进来看下! (200分)

  • 主题发起人 主题发起人 blandnet
  • 开始时间 开始时间
B

blandnet

Unregistered / Unconfirmed
GUEST, unregistred user!
一般截获API函数有两种方式:<br>1、陷阱式。这是通过修改代码来截获API函数的方法。<br>2、修改IAT式。这种方法是通过修改PE文件的IAT来实现的。<br>&nbsp; &nbsp;陷阱式是WIN98以前常用的方式,在WIN2K中这种方法会有抢占的问题,在WIN2K下,对有的API实际是没法处理的,比如SOCKET相关函数。<br>&nbsp; &nbsp;修改IAT式在WIN98和WIN2K都很健壮,但是存在一个致命缺陷:如果文件IAT没有API,那么就无法截获,这种情况主要是因为使用Loadlibrary和GetprocAddress引起的,也就是说在采用这种方式的时候必须同时截获这两个函数才可以。但是这又产生了另外的问题:<br>&nbsp; a、如果在目标程序启动之前进行截获,因为目标程序并没有启动,那么我们截获的对象应该是谁。<br>&nbsp; b、如果在目标程序启动之后进行截获。那么在目标程序启动时加载的API就会漏网。<br>&nbsp; C、实际上这两个函数也可以动态获取。也就是说,这两个函数也可以不载IAT中出现。 &nbsp;这时候就没又办法截获这两个函数。<br><br>对此,各位有什么比较妥善的解决方案呢??
 
很值得关注的问题,<br>问题2中的第一个,我猜想是否可以这样"在目标程序启动的时候,因为首先创建的是进程ID,在此即可以启动截获程序,因为此事目标文件仍然没有加载Loadlibrary和GetprocAddress,问题是如何使得程序等待截获程序启动之后并截获了WINMAIN消息之后程序才继续运行"
 
难怪在softICE下API抓的乱七八糟的,原来是这样[:D]<br>学习
 
SOFTICE里面的处理其实有所不同,它对此类的处理其实不会有错,SOFTICE里面乱的东西,应该是用户定义的函数最乱吧。
 
没人懂么????
 
不是没人懂,是高手还没到!<br>不过我不是高手,听课来了。
 
以下两种方式比较稳健:<br>1:用微软提供的Detuors库<br>2:写驱动
 
值得学习
 
后退
顶部