好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 592618243 于 2020-8-9 15:17 编辑
- 发错版块或如有违规麻烦版主大大删帖。不好意思。
- 1.稳定注入姿势
- 2.处理TenRpcs检测CLL
- 3.处理TCJ
- 4.探测GameRpcs
笔者最近迷上LOL,中低分段总是有脚本,被虐的很惨
然后笔者去市场上买来几款外挂,配合防封,然后小逆了一下,发现市场上的防封软件大多是通对游戏 LoadLibraryExW 挂钩子,让某些检测模块不加载,在这种情况下,阻断了通讯,这样可以稳定的玩游戏5局左右,之后就会封7天或者三年,如果处理了TenRpcs里的检测CALL(技能释放一类的)就是7天,如果没有处理就是3年,然后经过笔者多处咨询,发现市面上没有能稳超过10把的防封,于是笔者想看看TP到底是什么手段检测的,于是我与LOL迂回了半月之久,废话不多说,进入正题
1.注入姿势:
笔者采用 MDL内存映射形式向游戏进程写入了我的DLLShellCode ,用 NtCreateThreadEx 创建远程线程,游戏未发现,目前这个注入姿势是稳定的
2.处理检测CALL:
笔者在游戏主模块处发现游戏挂了70个钩子指向TenRpcs.dll,不解释,盘他
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 | BOOL RecoveryCode(ULONG32 地址, BYTE* 字节)
{
BYTE 判断 = { NULL };
DWORD 基址 = 0x400000;
DWORD 修改前的页面保护属性 = NULL;
RtlCopyMemory(&判断, LPVOID(基址 + 地址), 1);
if (判断 != 0xE8)
{
全局变量::当前大区未开放检测数++;
return FALSE;
}
if (VirtualProtect(LPVOID(基址 + 地址), 5, PAGE_EXECUTE_READWRITE, &修改前的页面保护属性))
{
RtlCopyMemory(LPVOID(基址 + 地址), 字节, 5);
if (VirtualProtect(LPVOID(基址 + 地址), 5, PAGE_EXECUTE, &修改前的页面保护属性))
{
全局变量::处理检测成功次数++; //std::cout << "√ " << hex << 基址 + 地址 << std::endl;
return TRUE;
}
}
全局变量::处理检测失败次数++; //std::cout << "X " << hex << GetLastError() << std::endl;
return FALSE;
}
VOID 处理检测()
{
LPVOID 内存地址 = NULL;
DWORD 函数地址 = NULL;
DWORD 模块句柄 = NULL;
DWORD 修改前的页面保护属性 = NULL;
do
{
窗口句柄::游戏窗口句柄 = FindWindow("RiotWindowClass", NULL);
} while (!窗口句柄::游戏窗口句柄);
///此处过检测代码由于危害腾讯安全给告知于19.02.05 21:30分删除此部分代码
string Message = "处理失败 " + to_string(全局变量::处理检测失败次数) + " 个检测点\n成功处理 " + to_string(全局变量::处理检测成功次数) + " 个检测点\n当前大区未开放的检测点有 " + to_string(全局变量::当前大区未开放检测数) + " 个\n\n是否继续游戏???";
if (MessageBox(窗口句柄::游戏窗口句柄, Message.c_str(), "", MB_ICONQUESTION | MB_YESNO | MB_TOPMOST) != IDYES)
exit(0);
} |
到这里的时候,笔者进行了游戏,发现封三年,于是笔者不开挂,只干检测一样被封三年,说明了什么
对!没错 CRC!不得不过 TP 检测系统的CRC有漏洞,过CRC代码如下,你会惊呆的
1 | VirtualProtect(LPVOID(0x401000), 0x1028000, PAGE_EXECUTE, &修改前的页面保护属性) |
哈哈,就是这么简单!这个为什么!咱就不多解释了,不是傻瓜都看得懂原理,我直接贴代码通俗易懂!
通过以上小操作后,单挂我自己的防封没有三年了,然后开始下一项工作,TCJ!
TCJ是干嘛的?在这里我科普一下,他会 EnumWindowProc 枚举你所有窗口,OpenProcess ReadFile... 太多了
总是TCJ负责一些外部检测以及内部检测,包括你注入的DLL文件,MD5哈希,窗口标题,类名,PE头,等等 .. 太多了
所以,想要完全达到防封状态,只干掉检测CALL还不行,必须要处理TCJ
于是我模仿了市场外挂 向 LoadLibraryExW 挂钩子,让TCJ在加载列表里消失,游戏不加载TCJ了,进入游戏爽
但是没爽多久5分钟后游戏弹出错误窗口,强制关闭,于是笔者调试跟踪到执行退出函数的点,发现在GameRpcs里,哇,还有这个东西,我都没注意!
于是分析了一下,这个GameRpcs非常不起眼,但是他起到重要的作用,他负责与TCJ和TenRpcs通讯!如果其中有一个模块有异常,他就会强制关闭游戏(本地命令)不是来自服务器的断开链接!而且通过笔者的CE遍历,遍历到了GameRpcs还会收集对局信息,包括当前玩家按下执行右键命令次数,玩家按下技能右键次数,等等信息,大家可以通过CE去搜索增加的值就可以,说到这里,我感觉这个检测系统好强大,收集这些数据是这是要人工分析吗??
笔者后续再写是怎么过的GameRpcs。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|