[转载]关于QQ游戏外挂mouse_event不起作用的原因,及我的对对碰外挂程序.
资源名称 关于QQ游戏外挂mouse_event不起作用的原因,及我的对对碰外挂程序. 作者: dongfa 适用语言: .NET 文件大小 2161 运行平台: Windows XP 上传者: sharpland 上传日期: 2005-05-02 15:39:16 点击: 9 简介 相信很多朋友都使用过QQ游戏的外挂和自己也开发过. 但可能你会发现,mouse_event不起作用了.这是为什么呢? 我写对对碰外挂的时候也碰到了.下面就把实现和解决过程说明如下. 关于如何判断对对碰中是否可以消除的代码略过(大家应该都是通过颜色来判断的),因 为这部分不是难点. 写好外挂后,反复测试发现,只有第一次运行结果正确,之后就不起作用了,然后动一下 鼠标或者点一下鼠标键就又起作用了.想到可能是QQ游戏起作用判断,它能分辨模拟鼠 标运作的硬件鼠标动作.(觉得QQ游戏写的很牛,佩服呀~~~) 经过查看目录,发现在游戏目录下面一般都会有这个文件kmsinput.sys,使用ida pro打 开分析发一下,发现这是nt下的鼠标的驱动,将作为过滤器filter加到的挂接到鼠标驱 动中的,这基本上就证实了我的想法,肯定是通过这个驱动程序来分辨模拟鼠标运作还 是硬件鼠标动作的. 然后就设想:当点击鼠标时,QQ程序应该是通过这个驱动程序来检测是否为硬件鼠标的 动作,我们的硬件鼠标是能够检测到的,如果你调用了mouse_event则视为非硬件鼠标动 作.就不处理鼠标动作,也就是认为你是模拟鼠标,表示你使用的外挂程序. 没办法只能反汇编跟踪调试了,先用ida pro反汇编了一下,发现有很大一部分区域没办 法反汇编出来,想到肯定是有加密了.于是我就使用windbg运行来分析了,通过跟踪鼠标 点击消息,发现在这个地方会跳转 00408519 8b11 mov edx,[ecx] 0040851b 6a01 push 0x1 0040851d ff5208 call dword ptr [edx+0x8] 00408520 3dc9d56601 cmp eax,0x166d5c9 //这是比较 00408525 0f85a0000000 jne twin!CxImage::`copy constructor closure‘+0x6a7b (004085cb) // 这是这里,如果是硬件鼠标动作不跳,如果是模拟就跳转了 找到了这个地方,就容易多了,很简单把 cmp eac,0x166d5c9改为cmp eax,eax 剩下的三个字节改为90 90 90. 再运行程序和外挂测试通过.大功告成了!哈哈... 另个,又研究发现,对对碰的速度是通过Sleep控制的,写了一个api hook,hook到Sleep, 将参数 VOID WINAPI CTwinHookFunc::MySleep(DWORD dwMilliseconds) { ... dwMilliseconds = dwMilliseconds/5; // 变为1/5 ... p_Sleep(dwMilliseconds); // 调用真正的sleep函数 } 再次测试,哇靠,好快呀~~~ 通过实战,挂了半天,发现可以同时对付几个人而且也不会输.胜率为90%,2000多分了. 对对碰外挂程序下载: http://adong2008.512j.com/temp/DDPHelp.rar 好久不玩QQ游戏了,上面的外挂是针对对对碰版本0.10.1.12的. 有任何问题欢迎交流.
版权声明:本文为Chinasf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。