我看到一个外挂,他实现多开游戏的原理就是通过外挂打开程序时,游戏的类名就改掉了。我看他就是一个exe的程序,没有相关dll,应该不是hook吧请教大家又什么办法可以实现这个功能我网上找了好久都没找到相关的说明

解决方案 »

  1.   

    你怎么就确定它是改类名实现多开?问题提得有点....所谓类名是指windowclass的成员className吗?
      

  2.   

    因为我用SPY++
    不使用多开器打开游戏后的窗口类名为 :Afx:00400000:0:00010003:01900012:00000000
    采用多开器打开后
    打开的多个游戏的的窗口类名全部为 :Afx:00400000:0:00010011:01900012:00000000反汇编出来查到里面有 Afx:00400000:0:00010011:01900012:00000000 字符串应该是他程序固定死多开后程序的类名的。
      

  3.   

    http://blog.csdn.net/laiyiling/archive/2005/04/08/340100.aspx找到这么一篇文章:修改窗口类名不知道delphi 如何实现
      

  4.   

    如果他的程序只是针对一个游戏的,那么可能是直接修改游戏程序代码,还有,没有DLL文件也可能是运行之后动态释放出来的也不一定。
      

  5.   

    我想到两个办法动态修改类名:
    1. 运行前修改一下EXE文件里存储的的窗口类名,不过一旦EXE被加壳或者窗口类名是动态生成的,就没办法了。而且对于多开的情况,也不适合。
    2. HOOK 该进程的 RegisterWindowClass函数和CreateWindow函数,把函数的参数改掉。感觉应该比较可行。
      

  6.   

    现在我也碰到了这个问题 有个软件直接把IE的类名改了 用findwindow IEFrame找不到IE