计算机二级考试C语言辅导:通过HOOK获取QQ游戏登录密码

计算机二级考试C语言辅导:通过HOOK获取QQ游戏登录密码,第1张

计算机二级考试C语言辅导:通过HOOK获取QQ游戏登录密码,第2张

//通过HOOK获取QQ游戏登录密码
//by redice 2008年7月19日
/redice @ 163.com
没什么新鲜的,我只是想回顾一下HOOK和dll的编写...
先发一个运行渲染图的程序:
我得说一下API函数SendMessage:
:
使用SendMessage将WM_GETTEST消息发送到编辑框窗口(即使这个窗口不属于同一个进程),就可以轻松获取编辑框的内容。
但有一种特殊情况,就是当编辑框窗口有ES_PASSWORD样式(即密码输入框)且没有输入同样的过程时,使用上述方法将无效。
通俗地说,当你要读取的密码框与SendMessage不属于同一个进程时,你就什么也读不到了。
也许是微软从安全角度出发做的事情。
如何解决这个问题?
如果我们能把SendMessage放到目标流程中执行,问题就解决了。因为当您属于同一个进程时,可以使用SendMessage读取密码框的内容。
如何将SendMessage放到目标流程中执行?使用钩子(或进程注入)。
关于Hook
Hook是一个Windows消息处理机制的平台,应用程序可以在其上设置程序来监控指定窗口的某些消息,被监控的窗口可以由其他进程创建。
当消息到达时,在目标窗口处理程序之前处理它。钩子机制允许应用程序拦截和处理窗口消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用挂入系统。每当一个特定的消息被发送出去,钩子程序就在消息到达目的窗口之前捕获它,也就是钩子函数先获得控制权。
此时,hook函数可以处理(更改)消息,继续传递消息而不进行处理,或者强制结束消息的传递。
如何安装挂钩?
使用了API函数SetWindowsHookEx。原型和参数描述如下
hhook SetWindowsHookex(
int id hook,//钩子的类型。在此示例中,使用了WH_CALLWNDPROC(窗口过程钩子)
钩子子程lpfn。//钩子函数的地址(即钩子函数的函数名)
HINSTANCE hMod,//钩子函数所在应用实例的句柄,(这里是DLL的句柄)
DWORD dwThreadId //目标线程Id,即钩子的宿主线程
];
注意:当最后一个参数为0时,表示安装了全局钩子,钩子函数必须在DLL中。
MSDN上对该功能的描述非常详细。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 计算机二级考试C语言辅导:通过HOOK获取QQ游戏登录密码

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情