简单的工作室

当前位置: 主页>编程技巧>VC++编程>

VCHOOK函数CreateMutex实现游戏(植物大战僵尸)多开效果

时间:2014-07-03 17:15来源:未知 作者:admin 点击:
最近想写个游戏多开的外挂,犹记得在大学那个时候就一直想多开一些游戏的,但是那个时候技术有限,只能创建多个系统用户或者使用虚拟机来达到游戏多开的目的,那样效率太低下了。这几天在研究多开游戏,终于有点效果了。 我是以植物大战僵尸多开为例,网上许多文章都说HOOK Ge

       最近想写个游戏多开的外挂,犹记得在大学那个时候就一直想多开一些游戏的,但是那个时候技术有限,

只能创建多个系统用户或者使用虚拟机来达到游戏多开的目的,那样效率太低下了。

这几天在研究多开游戏,终于有点效果了。

     我是以植物大战僵尸多开为例,网上许多文章都说HOOK GetlastError函数实现多开,

我开始的思路也是这样的,但是实际情况HOOK后游戏不知道为什么经常死掉,或者卡主不动.

后来实在没办法.我改成直接HOOK CreateMutex实现多开,主要是修改互斥体 lpName名称来实现的,比如游戏

创建了互斥体   ret= CreateMutex(NULL,FALSE,"植物大战僵尸");用我们自己的程序 HOOK 后实际执行了 

ret= CreateMutex(NULL,FALSE,"20140703时间"); 貌似效果还不多错。


主要VC源码如下

HANDLE FAR PASCAL hook_CreateMutex(
  __in_opt LPSECURITY_ATTRIBUTES lpMutexAttributes,
  __in     BOOL bInitialOwner,
  __in_opt LPCSTR lpName
    )
{
HANDLE ret=0;


if (ah_CreateMutex.isHooked)
{
ah_CreateMutex.HookOff();

time_t tick;
        struct tm tm;
        char s[100];
tick = time(NULL);
        tm = *localtime(&tick);
           strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &tm);

  ret= CreateMutex(lpMutexAttributes,bInitialOwner,s);//修改互斥体名称
 
ah_CreateMutex.SetJumpCode();
return ret;
}
return 0;
}




(责任编辑:简单的工作室)
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容