我装了一个CBT Hook,然后在里面判断Attach进程是否是我要拦截的,如果是的话,就改变Import表,然而问题是Hook上去的时候[After WaitInputIdel]ChangeDisplaySettingsA已经在InitInstance里面运行了,试过建立Suspend进程,但是这样的话SetWindowsEx(WH_CBT, ...)会失败..........
修改EXE来挂接转发的话应该可以,但是因为一些特定原因我不能用这个方法,请诸位帮帮忙指点一下吧。

解决方案 »

  1.   

    关注,恐怕 HOOK 不能满足要求,ChangeDisplaySettingsA 如果是在第一个 user32 调用前调用的,Hook 这是还没有加载的机会。试试用 CREATE_SUSPENDED 标志创建进程,然后通过 CreateRemoteThread 这样的方法挂接 DLL , 然后拦截 ChangeDisplaySettingsA
      

  2.   

    你的方法应该是可行的,我虽然我试过,不过从Richter的描述来看,这应该是一个可行的方案,偏偏就是用户大部分是9x的系统.........
    CreateRemoteThread在9x里面只有定义没有实现,也是Richter说的。