TC官方合作论坛

 找回密码
 立即注册
查看: 1375|回复: 5

[讨论] 关于通用突破绝大部分游戏多开方法

[复制链接]
发表于 2015-12-1 13:26:31 | 显示全部楼层 |阅读模式
本帖最后由 如此美丽。 于 2015-12-1 15:05 编辑

只介绍原理及思路 请自行动手 丰衣足食 :)
一般限制游戏多开的方法 互斥体(Mutant) 信号量(Semaphore) 事件对象(Event) 共享内存(Section)


一般的思想是 shellcode

__asm{
  push hObject
  call CloseHandle
}

二漠大神的 二漠想逆天了!揭秘被浮夸到神乎其神的技术<关闭其他进程的内核对象>! 可以突破大部分游戏多开限制!  


这个贴有个误区就是 hObject(句柄对象) 是会变动的  所以你得先 DuplicateHandle 出句柄对象 才能关闭  而且仅限于 这个指定的游戏  并不通用

在一个游戏不知道他创建几个内核对象  而且不知道什么名字的情况下  如何通用?    (此方法需要在进程创建前使用  否则对象已经创建完  你Hook也无用)
Hook 变形句柄名称  (不要多想  纯TC都可以实现)

就拿 TC 案例中的 禁止多开 举例  事件对象(Event)



调用了  CreateEventW   继续往下 会发现他调用了 CreateEventExW  再下就是  ZwCreateEvent

所以由此可得  我们将 Hook 4个

ZwCreateMutant, ZwCreateSemaphore, ZwCreateEvent, ZwCreateSection


观察参数可得  
他们的第三个参数  OBJECT_ATTRIBUTES 结构体中的 ObjectName 即是创建的对象名称  但是它是个 UNICODE_STRING 结构体  (意思就是传经来的都是 UNICODE 字符串)

实现方法

[ESP + C] = OBJECT_ATTRIBUTES

[OBJECT_ATTRIBUTES + 8] = UNICODE_STRING

[UNICODE_STRING + 0] = strlen * 2 (UNICODE  不含\0)

[UNICODE_STRING + 2] = (strlen + 1) * 2 (UNICODE  含\0)

[UNICODE_STRING + 4] = BufferAddr (字符串指针)


please call me Lei feng.

申请一个空白空间 shellcode  即可实现  纯TC的话   下个  R妹子的 内存操作库     不要多想 纯TC真心可以实现  ..  毕竟我已经实现了

吐槽的楼下可以继续了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

 楼主| 发表于 2015-12-1 13:26:32 | 显示全部楼层
沙发不是谁都可以坐的
回复 支持 反对

使用道具 举报

发表于 2015-12-1 13:29:44 | 显示全部楼层
本帖最后由 good 于 2015-12-1 13:48 编辑

Lei MeiLi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2015-12-1 15:40:10 | 显示全部楼层
求一个TC5 多开的例子
回复 支持 反对

使用道具 举报

发表于 2015-12-1 15:50:44 | 显示全部楼层
还有利用 ZwQuerySystemInformation 过滤出需要关闭的句柄
调用 ZwClose 来远程关闭
回复 支持 反对

使用道具 举报

发表于 2015-12-1 16:46:48 | 显示全部楼层
美丽,有进步了。继续干掉TP
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-24 10:43 , Processed in 0.042232 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表