论坛首页 安全工具分享区 阅读主题

[原创]2026腾讯游戏安全PC初赛Writeup

389 浏览 2 回复
#1 楼主 2026-06-01 21:08:54
四年参赛老兵报道了。。


题目描述

(1) 成功加载驱动并与之正确通信,理解题目基本机制,识别并排除干扰信息。需在 writeup 中说明分析过程。(满分1.5分)
(2) 发现「宫殿」系统的隐匿通信手段并编写可工作的检测工具,发现的手段种类越多、利用越完整,得分越高,需提交相关源码并在 writeup 中说明分析过程(满分5.0分)
(3) 探索出「宫殿」系统完整的迷宫墙壁布局,需提交迷宫地图和自动化探索脚本。(满分1.5分)
(4) 在还原的迷宫地图上求解起点到终点的最短路径。需提交求解算法和路径结果。(满分0.5分)
(5) 提交正确的 Flag 得 1.5 分;到达终点但未能正确解密得 0.5 分。(满分1.5分)

本篇分析按照 1->3->4->5->2 的顺序分析。
加载驱动并通信
首先分析 R3 程序,字符串大法好

直接就能看到一个驱动通信的设备:

\\.\ShadowGate

同时还看到两个全局事件:

Global\MazeMoveOK
Global\MazeMoveWall

信息获取完,直接看驱动程序,顺着 DriverEntry 找到关键逻辑,由于 sub_1400018A0 被 vm 了,所以它被识别为了 no return,取消掉就可以看清楚所有逻辑了。

具体通信设备就是 \\.\ShadowGate,开始分配了一个 0x1D8 大小的内存,指针保存在全局变量 P 中,tag 为 Maze。
往下翻可以发现驱动是通过 IRP 通信的

具体就是 R3 程序通过 DeviceIoControl 与驱动通信。
探索地图&求解最短路
查看 DeviceControl 函数,有三个控制码

经过逆向分析,猜测出 P 的结构。


0x00~0xA8
169B
13×13 迷宫网格(0=通行,1=墙壁)


偏移
大小
说明


0xAC~0xB3
当前坐标 (x, y)


0xB4~0xBB
其他状态


0xBC~0xBF
总移动计数(每次 checksum 通过的 IOCTL 递增)


0xC0
状态标志


0x1C0
SpinLock


0x1C8~0x1CF
调用进程 PID


0x1D0~0x1D7
调用线程 TID

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290794.htm
#2 2026-06-01 21:08:54
牛逼
#3 2026-06-01 21:08:54
还能这么搞

请登录后参与讨论

立即登录 注册账号