高手请进!!(100分)

Y

yygw

Unregistered / Unconfirmed
GUEST, unregistred user!
本人写一98下32位鼠标取词代码,有以下问题:<br>1、Dll插入由鼠标钩子完成。<br>2、在替换ExtTextOutA时,由于在98下系统不允许Ring3下的代码修改Kernel32.dll<br>页面,于是我写了一段代码跳到Ring0实现这种修改(测试完全正常)。<br>3、但是由于Dll插入到各进程时加载到的地址不一样,如果我按某一线程空间计算<br>出的MyTextOutA地址并写到ExtTextOutA代码中,其它的线程在调用ExtTextOutA时<br>不一定能跳到我的MyExtTextOutA中,而是蓝屏。。。<br>难道我非得写一段调用GetModuleHandle加GetProcAddress查找MyExtTextOutA的地址<br>的代码插入到ExtTextOutA中吗(也不知是否可行)?<br>而在NT下可以不用跳到Ring0,直接用VirtualProtect修改ExtTextOutA页面属性就可<br>以改写它的代码,好象也没有发现Dll插入时地址变化的问题。<br>高手请赐教!!!<br>不要告诉我用16位代码改段选择子的方法,我只想在98下用32位代码实现。<br>如果谁有修改Import节而不用改写ExtTextOutA代码的源代码也可以。
 
是否可以这样?<br>DLL中设置一个数据,对于各个进程(线程)是共享的。
 
高手都哪去了??
 
接受答案了.
 
API HOOK、屏幕取词的完整解决方案见我的《delphi深入windows核心编程》一书,<br>解决了IE、win98下的高技术难题,支持windows98/2000/xp,<br>我的主页http://wenjinshan.yeah.net
 
顶部