首页
社区
课程
招聘
[原创]TX游戏多开分析
发表于: 2013-4-8 15:06 33911

[原创]TX游戏多开分析

2013-4-8 15:06
33911

作者:Tiany
QQ:304400230
花了10多天 研究过XX的多开 研究分析出一些东西 可是也被卡住了 遇到瓶颈 搞的郁闷了 把我分析到的东西和大家分享一下吧 

大家都知道一般多开检测 都是一些互斥体 信号量 这些内核对象 当然TX也不例外 他也会对这些对象有检测  当然还有其他的检测 但是关键的代码都被VM了  所以想逆的难度就相当的大(对我而言) 所以我们必须要想些其他的方法 



一般而言这些内核对象为了要个多个进程访问 所以都有Name 因为我们不好断定程序使用了1个或几个内核对象 来对比判断 所以这里我用的方法是 Inline Hook ZwCreateMutex ZwCreateEvent 
ZwCreateSection  ZwCreateSemaphore .... 这些函数 检测一下 如果Name 不为空的话 我们都让他的名字改变一下 达到每个进程创建的内核对象都变形 

这里为什么要HOOK Zw开头的函数 我解释一下  因为CreateMutexA 调用 CreateMutexW 然后调用 ntdll.dll-ZwCreateMutex 函数 继续就到内核 nt!ZwCreateMutexA 
(ntdll.dll-ZwCreateMutex 和 ntdll.dll-NtCreateMutex) 的导出地址是一样的 


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • 1.jpg (83.93kb,4822次下载)
  • 2.jpg (89.71kb,4760次下载)
  • 3.jpg (9.52kb,23次下载)
  • 4.jpg (46.47kb,22次下载)
收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
沙发自己坐

wsprintfW(lpTemp,L"[Ten] [DLL] %lS%08X",ObjectAttributes->ObjectName->Buffer,GetCurrentProcessId());

改成

wsprintfW(lpTemp,L"%lS%08X",ObjectAttributes->ObjectName->Buffer,GetCurrentProcessId());

上次改代码输出自己看效果 漏了没改
2013-4-8 15:19
0
雪    币: 506
活跃值: (318)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
能搞掉VM就碉堡了
2013-4-8 15:21
0
雪    币: 138
活跃值: (460)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
如果我是TX反挂部门的;  多开方面 着重点会放在  R3跟TP的通信上;  外加 R3的各种猥琐手段;

VM是道坎啊~
2013-4-8 15:27
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
主要也是因为代码都VM了 所以要分析起来难度也大
2013-4-8 15:29
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
TX除了DNF , QQGame 外,其它很多游戏都不是用 Mutex 来判断多开的

可以直接排除了 ,

CreateToolhelp32Snapshot 更低级了,TX肯定不会用的
2013-4-8 15:51
0
雪    币: 45
活跃值: (1359)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈,正在找呢,你就发出来了。。。。
2013-4-8 15:55
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
不是很赞同你说的 其实限制多开很多都是那几个方法 因为他搞了点龌龊的方法来实现 当然也不排除他用了一些不为人知的方法
2013-4-8 15:55
0
雪    币: 1052
活跃值: (1248)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持一个
现在vm关键代码,只有用枚举法了
2013-4-8 16:22
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
原来也逆过一个多开程序
他也处理了 ZwDeviceIoControlFile 这个函数
我估计是驱动通信 也稍微看了下 都VM了
2013-4-8 16:32
0
雪    币: 107
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
仔细看UDP端口吧..
用了端口的唯一性实现的限制多开
2013-4-8 22:07
0
雪    币: 47147
活跃值: (20405)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
12
帖图,你参考这帖改一下,目前的有些问题:
http://bbs.pediy.com/showpost.php?postid=292659

正常显示正文中的附件形式:
[ ATTACH ] 785553 [ /ATTACH ]
2013-4-8 22:19
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
为什么这么暴力,其实可以很和谐的....比如互斥信号量.可以返回某XX 然后就可以多开了.不过TP驱动通讯还是要看的.
2013-4-9 01:31
0
雪    币: 87
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
大晚上的路过这里。虽然看不懂。但支持一下。
2013-4-9 02:47
0
雪    币: 219
活跃值: (773)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
15
我是路过的
2013-4-9 07:13
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
老卢日游戏日的果然人很精神...哎...好久没日游戏了!
2013-4-9 07:25
0
雪    币: 97697
活跃值: (200744)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
17
Thanks for share.
2013-4-9 22:09
0
雪    币: 106
活跃值: (569)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
进来支持一个
2013-4-10 11:38
0
雪    币: 266
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
不是r3的,曾猜测是r0上有个链表或数组保存有进程句柄,pid什么的,IoControlFile添加PsSetCreateProcessNotifyRoutine回调中移除。

一直没去深究,不过感觉上因该是这样的。可以摘除回调,来证实这个猜测。
2013-4-11 02:06
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
中,,,,,
2013-4-11 02:17
0
雪    币: 2011
活跃值: (1066)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
虽然看不懂,但感谢你的分享.
2013-4-15 21:36
0
雪    币: 36
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
内核下进程数检测,停掉内核线程就可以了。
2013-4-15 21:49
0
雪    币: 48
活跃值: (496)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
23
据我记忆,楼主你这2开都成问题,2到无限开又不一样。不知道现在变了没有,楼主可以看看我的帖子,虽然那代码是09年左右的,不知道能否再用。
2013-4-16 10:29
0
雪    币: 92
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
很高端,虽然看不懂,但还是要支持下
2013-5-1 03:28
0
雪    币: 639
活跃值: (1192)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
25
双开的话很简单 但3开会TP会提示。百宝箱DxF为例
2013-6-14 16:24
0
游客
登录 | 注册 方可回帖
返回
//