尝试借道网易 UU 加速器翻墙失败:从文件重命名到 DLL 注入
值此「六四事件」33 周年之际,防火长城发威,我使用的梯子们断的断、残的残。无奈,我只好打起了中国大陆境内各家网游加速器的主意。
我盯上了哔哩哔哩众多《Apex 英雄》内容创作者力荐的 网易 UU 加速器。我架起虚拟机,请来了 UU 加速器本尊和 Polipo。UU 加速器主要提供「路由模式(模式三)」和「进程模式(模式四)」。我选择了「模式四」,尝试把 polipo.exe
重命名成 r5apex.exe
,以期让 UU 加速器「加速」它。
UU 加速器将信将疑地启动了 Polipo 扮演的「Apex 英雄」,不过显然,代理没奏效。
我又尝试了「路由模式(模式三)」,并手动操作本机路由表。结果 UU 加速器也不吃这套。
在互联网上瞎逛的时候,我忽然想起了「白利用」技术(有数字签名的正常 .exe 文件 + 掺了私货的 .dll)。四处 Google 了一番,找到了几篇看不懂的教程。
我又想起了早年间看过某位大佬写的,为《饥荒》桥接 LuaJIT 引擎的文章。于是我找到了 《饥荒游戏扫雷笔记 系列全文合集》(知乎) ,里面刚好详细介绍了用 dinput8.dll
「捅篓子」的方法,还附带了一些源代码。
我原先的计划是替换掉 Steam 目录下的 zlib1.dll
,奈何我去网上找了个大小不一样的同名 dll 扔进去,触发了 Steam 的校验机制:Steam 发现了异常,还好心地帮我备份了出问题的 DLL 文件。
于是我把目光转向 bcrypt.dll
:Steam 似乎只导入了 BCryptGenRandom 函数。我新建了空白的 bcrypt.dll 文件,结果 Steam 既没崩溃也没报错;我又盯上了 steamwebhelper.exe
,它不仅会使用 bcrypt,也会使用 WINMM。我尝试新建空白的 WINMM.dll
文件,报错。看来 WINMM.dll
应该可以用来注入 steamwebhelper.exe
。
经过一天的努力,我,U.M.R Powered,终于做到了:
- 使用 AheadLib 生成白利用 DLL 源码
- 安装 VS2022 + MFC
- 踩进了 VS2022 新项目默认
WINAPI_FAMILY
设定的坑 - 构建出了能用的白利用 winmm.dll
- 把 Polipo 编译链接成 .dll
最后,steamwebhelper.exe
按照我的设想,在 8123 端口上启动了 Polipo HTTP 代理服务器。但是,UU 加速器的反滥用机制也有两把刷子——如同设置了 destOverride 的 V2Ray 一样,UU 加速器也会读取 TLS ClientHello 中的 server_name
字段,并按其内容确定目标地址。
P.S.
UMR 发现有一些网游加速器仅通过文件重命名就能顺利实现借道翻墙——但是它们大多有自己的黑名单(比如无法访问 web.archive.org)。读者也可以自行尝试上述的三种方式尝试「滥用」网游加速器。