工具用途:在操作者按完R键摇出技能后,马上模拟键盘点击三个W键,让身上挂慢雷球达到最大速度,使行动更方便。
制作思路:制作一个线程钩子,拦截war3程序的键盘消息,在DLL文件中编写钩子的函数,因为不用拦截系统所有的R键消息,所以只用线程钩子就可以。再写一个外壳程序,将DLL文件注入到war3的进程中去,通过DLL_PROCESS_ATTACH的理由得到调用。
实现过程中遇到的问题:1、在用win32程序编写对话框程序的时候,与原来一样的语句结果却不能显示对话框,提示Cannot find or open the PDB file。2、Hook技术的实现,看了很多例子,大多数是全局钩子,据说会影响系统性能,全局钩子是要放在DLL文件中的,局部钩子最好是放在DLL文件中,有的例子是用AFX_EXT_class来导出钩子函数,这是MFC里面的东西,MFC封装了好多东西,更让人只能看代码,不好懂代码,几乎都是只讲写这些代码,不讲为什么这么写,让人看了还是一头雾水,毕竟每份代码都是不一样的,还要再从中理清楚代码的原理,也就是说DLL文件的编写还存在不明白的地方。3、近两天编写了代码,编译都没有问题,但运行却是什么也没有,仅仅是这样的小工具,出了问题都不知道从哪里开始找BUG,头大。
不显示对话框是因为DialogBox()写成了createdialog(),改过来之后就可以显示对话框了,之后的运行注入执行正确,但是注入了之后Dll文件好像没有正确执行它的功能,Dll文件执行的时候好像要导出它的函数,还要进行一系列声明,在链接lib文件的时候,报错说找不到lib文件,不知道为什么,明天接着改。