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代码的源代码也可以。