楼主还需要注意一下,64位系统是兼容32位程序的,即在64位环境下,楼主需要个版本的dll,一个负责注入32位程序,一个负责注入64位程序。
一如果没有特殊的代码,能直接编译通过的

解决方案 »

  1.   

    还是不行,编译成64位版本DLL,在Win8(64位) 发现钩子虽然安装成功了,但是无法注入到其他进程,而在32位下是可以的。可以排除杀毒软件的干扰(没有装任何杀毒),权限问题可以排除,SYSTEM权限。只是一点也许有问题,我用一个32位程序去调用的这个64位版本dll,不知道这样是不是失败的原因?
      

  2.   

    还是不行,编译成64位版本DLL,在Win8(64位) 发现钩子虽然安装成功了,但是无法注入到其他进程,而在32位下是可以的。可以排除杀毒软件的干扰(没有装任何杀毒),权限问题可以排除,SYSTEM权限。只是一点也许有问题,我用一个32位程序去调用的这个64位版本dll,不知道这样是不是失败的原因? 
    还有我是在32位系统下用x64编译生成的64位dll,这里有没有问题
      

  3.   

    呵呵,楼主,你注入一个dll到其他进程,和那个进程去加载这个dll是一样的。
    32位程序,只能加载32位的dll
    64位的程序,只能加载64位的dll
    这个是基本的,我上面说的也是这个意思,在64位系统上,有64位程序,也有32位程序
      

  4.   


    首先可能还是考虑dll版本问题,我再试试。
      

  5.   

    win7 没有问题,我的钩子库就是32位和64位两套平行钩子系统的实现
    猜想win8可能对注入比较严格吧,原理上不存在问题
    还有提醒LZ,如果你的DLL使用了共享内存段,要注意64位DLL和32位DLL共享内存段是隔离的
      

  6.   


    我现在HOOK的是任务管理器的OpenProcess函数,却发现Win8 64位的任务管理器好像没有OpenProcess?这里暂不讨论,另外开帖。