书上说,在WIN98下以JMP方法(改前5个字节)来拦截某些API函数!但会影响到其他进程
。这样有时会出错!我想问一下,是不是所有的被拦截函数都会影响到其他的进程!我的理解是拦截系统的API函数才会影响到别的进程!比如,屏幕取词的TEXTOUT函数等,因为这样的系统函数会加载到0x80000000以上的地址空间!所以每个进程都是可见的!而如果我要拦截的是某些不是系统DLL函数如:WSOCK32。DLL里的SENDTO函数,是不是该函数不会影响到其他的进程!我试着拦截SENDTO函数了!也没有发现WIN98下出错啊!

解决方案 »

  1.   

    你说得有道理。我也认为只有拦截了0x80000000以上的地址空间的函数才会影响全局,通常就3个DLL,Kernel32,User32,还一个什么来者忘了。
      

  2.   

    在csdn论坛上搜索“屏幕取词”
      

  3.   

    不要说“屏幕去刺”,它拦截了User32中的函数,处于共享内存里,影响全局。
      

  4.   

    因为windows是抢占式多线程,试想一个线程eip指针处于第三个字节处被抢占,而你的代码恰好改写这5个字节,第一个线程将崩溃,拦截api比较安全的方法是替换每个pe映像的引入表地址,当然这样会比较麻烦些。