貌似 C++里的cpp文件相当于动态链接库的源文件
在向 热血江湖 这款游戏中注入钩子dll时 用冰刃查看发现什么也没有 过了一会360提示程序试图注入QQ 我同意了以后 发现在QQ进程中有所写的DLL文件 说明在注入的时候发生了偏差
ok 完成注入 局部关键代码如下
invoke FindWindow,NULL,addr szwgtitle ;第二个函数此处要用addr .if eax mov hwggame,eax ;将返回值保存
invoke GetWindowThreadProcessId,hwggame,NULL ;注意只有两个参数 第一个参数是上一句得到的游戏程序句柄 此API函数一般都会跟着第FindWindow函数用
mov szdwProcessId,eax ;将返回值赋保存 invoke SetWindowsHookEx,WH_KEYBOARD,addr HookProc,hInstance,szdwProcessId ;安装钩子 mov hHook,eax ;将返回值保存 invoke MessageBox,NULL,addr szwgtitle,addr szwgtitle,MB_OK ;这一句是测试 如果第一句执行错误 就不会执行到这一句 .endif
还有如果有360保护 就会强制关闭游戏 必须先关掉或者暂停360
今天一直在想一件事情 就是如何生成子窗口 子窗口的窗口过程是否跟主窗口一致 老罗书上面好像没写 rita
后来查了一下非模态对话框要建立自己的窗口过程 模态对话框沿用主程序窗口过程 那么一般窗口呢?难道是在注册窗口类的时候填写?
刚才做了一个试验 在动态链接库中安装完钩子函数后 立即调用非模态对话框函数 结果无法显示 为了检查是不是函数用法出了问题 故研究了一下对话框例子程序 发现其写了资源文件 而我当时图方便就没有写这个只是在安装时调用函数建立 于是我将例子程序资源文件删掉重新编译 发现即使调用了对话框函数 例子程序也无法生成对话框了 这说明 对话框函数可能并不提供构建对话框的功能 不能将其误等同于能够正常建立窗口框架的CreateWindowsEx函数() 说明以后还是尽量要写资源文件