最近我在hook时发现TextOutA后面第三个字节就是TextOutW,类似的ExtTextOutA之后第五个字节ExtTExtOutW,这样使用Jmp方式hook就会有问题,我听说有一种方式在第一个字节插入int3这样就可以解决了吗?高手帮忙!

解决方案 »

  1.   

    我是为了屏幕取词,我在98下hook api,我使用过两种方法:1.Jeffrey Richter的Hook PE文件的Import Table的方法2.修改api entry point指令为jmp。
    结果:第一种:对于notepad.exe这种没有直接调用textouta(w),exttextouta(w)的无能为力。第二种:对于textouta开始指令后的第3个字节就是textoutw了,而我的jmp指令要占5个字节呢,此时如果同时hook textouta和textoutw后,不会正常工作,原因很简单:有重叠的代码,至少会有一个函数工作不正常(其实textouw后面的第四个字节好像也会有问题)。
    所以,我想使用另一种方法:在api entry point指令修改为 int 3。在vxd中hook int 3。而 int 3的指令很短。但是对于vxd中截获int 3后如何处理api参数我又不在行,向大家请教!
      

  2.   

    http://www.luocong.com/articles/show_article.asp?Article_ID=25