首页
社区
课程
招聘
[求助]對某遊戲的多開(HS)求助
2014-9-23 23:12 8414

[求助]對某遊戲的多開(HS)求助

2014-9-23 23:12
8414
首先話說前面:這個遊戲的多開已經是免費的到處都有了。研究僅僅是作為技術部分在研究,而且也不會存在商業利益。

//-------------------------------------------------------

首先,該遊戲會在廣告窗口 創建一個名為:“WvsClintMtx” 的互斥體多開,來防止二次開啟…如果存在該互斥體,就自動跳到第一個上面並且退出第二個進程。

對此,我用劫持的方法HOOK了CreateFileMutexA,並且成功開啟第二個遊戲廣告界面。代碼如下:
  if (lpName && !lstrcmpiA(lpName,"WvsClientMtx"))//检查传递进来的参数里是不是WvsClientMtx
  {
    //如果是
    DWORD Timer;
    int RandTimer;
    char ChangeName[254];
    Timer = GetTickCount();//随机一组数字
    srand(Timer);//置随机种子
    RandTimer = rand();//随机一个数字
    sprintf(ChangeName,"%s_%d",lpName,RandTimer);//格式化为WvsClientMtx_1123 这样
    MyDbgPrintA("[+] 名称为: %s 修改名字尝试为:%s",lpName,ChangeName);
    lpName = ChangeName;//更改
  }
  MyDbgPrintA("[+] 名称为: %s 创建",lpName);


這樣雖然可以開啟更多的廣告界面的遊戲,但是第一個登入遊戲後,會發現第二個的時候就會提示
HS遊戲運行中…這樣這樣…

然後後面還有其他的。例如會創建一些Mapping這樣。 針對某多開逆倒是逆出了一點東西。不過很明顯,不完全。
  if (!lpName || lstrcmpiA(lpName,"MultiProcessor__"))
  {
    if (lpName && strstr(lpName,"Global\\{D843DD7B-FD87-4027-98A6-5B5869D753E1}"))
    {
      MyDbgPrintA("[+CreateFileMappingA+] 开始控制 %s",lpName);
      DWORD Timer = GetTickCount();
      srand(Timer);
      DWORD RandTimer = rand();
      sprintf(TempMappingA,"%s_%d",lpName,RandTimer);
      MyDbgPrintA("[+CreateFileMappingA+]  %s -> %s",lpName,TempMappingA);
      lpName = 0;
    }
  }


Event我則只是以這個處理的。“if( !strstr(lpName,"Global\\DEA74738")”

處理一些之後依然沒有弄明白“HS”的206 檢測出現在哪個地方。


也希望各路大神能夠指點一下……
以下是我寫的部分源代碼,如果對大家有用了還請收下。

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (11)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 1 2014-9-23 23:18
2
0
hs多开不是要算号的吗?
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2014-9-23 23:20
3
0
我記得之前是無需算號的。 5.5系列吧…5.6的不明。
雪    币: 101
活跃值: (157)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
cxxxx 1 2014-9-24 02:26
4
0
5.7 也不用..关键是要找到方法..
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2014-9-24 05:02
5
0
能否指點一下呢?...?
雪    币: 9
活跃值: (939)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
网络游侠 2014-9-24 13:33
6
0
{D843DD7B-FD87-4027-98A6-5B5869D753E1} 修改这个,就可以了。
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2014-9-25 08:56
7
0
  if (!lpName || lstrcmpiA(lpName,"MultiProcessor__"))
  {
    if (lpName && strstr(lpName,"Global\\{D843DD7B-FD87-4027-98A6-5B5869D753E1}"))
    {
      MyDbgPrintA("[+CreateFileMappingA+] 开始控制 %s",lpName);
      DWORD Timer = GetTickCount();
      srand(Timer);
      DWORD RandTimer = rand();
      sprintf(TempMappingA,"%s_%d",lpName,RandTimer);
      MyDbgPrintA("[+CreateFileMappingA+]  %s -> %s",lpName,TempMappingA);
      lpName = 0;
    }
  }


我是這麼處理的,但是發現第二窗口出不來?
雪    币: 9
活跃值: (939)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
网络游侠 2014-9-25 12:06
8
0
不是这样改的。
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2014-9-25 12:36
9
0
已經很久了。研究2個月了… 實在沒啥頭緒,求最後幫助…。。能進入第二界面就可以了…
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
火山蚂蚁 2014-12-14 17:55
10
0
难道要Hook ZwCreateSection 和ZwOpenSection ?
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2014-12-15 04:33
11
0
Zw不行的,在R0下可以看到,HS重载了NTDLL
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fzxingjy 2015-2-3 16:49
12
0
我可以开第2个窗口,但是一会1分钟左右,后开的游戏就会消失,不知道怎么回事。没有任何提示
游客
登录 | 注册 方可回帖
返回