ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

黑龙江省文化经营技术监管系统“读网吧名“的逆向路径:从 SOUI 死路到内存 szTip 直达,以及 rust-cafe-tune 的自动化落地

黑龙江省文化经营技术监管系统“读网吧名“的逆向路径:从 SOUI 死路到内存 szTip 直达,以及 rust-cafe-tune 的自动化落地 一、问题/背景网吧名称为什么读不到黑龙江的网吧客户机上统一安装着一套文化经营技术监管系统客户端位于C:\Program Files (x86)\culclientYkt\cclt.exeProductNameCulClient版本 1.0.0.2未数字签名。它的任务是向监管端上报场所信息同时在下班的运维场景里我们希望能程序化读出当前这台机器属于哪家网吧从而自动加载该网吧的个性化配置鼠标灵敏度、音量、桌面壁纸、软件清单等。但第一次尝试就撞了墙——网吧名称拿不到明文客户端界面是SOUI 自绘文字画在窗口上不经过标准窗口文本机制GetWindowText只能拿到SOUI_DUMMY_WND这类固定标题进程被VMProtect 3.2–3.5加壳DIE 检测到.vmp1段 packed熵 7.96.text代码和导入表IAT都被虚拟化静态字符串全灭——搜索网吧/场所/监管/一卡通等关键词ASCII 与 UTF-16 双通道零命中配置目录里的package.json是自定义 A-Z 替换密码密文18716 字符、仅 26 个大写字母不可解抓包看流量全部走自定义二进制帧且连接192.168.8.x内网无明文。一句话总结背景名称被SOUI 自绘 VMProtect 混淆流量三层封死常规 GetWindowText / 静态 strings / 配置文件三路全断。二、原理/思路壳保护代码不保护API 参数静态分析失败后我换了一个关键视角VMProtect 加密的是.text代码和 IAT但它拦不住API 调用参数——因为参数必须是明文被调用的系统 API 才能理解它。这条链上有一个天然突破口托盘图标。cclt.exe在系统托盘常驻有图标而 Windows 画 tooltip 的前提是进程调用Shell_NotifyIconW(NIM_ADD)时把提示文本放进NOTIFYICONDATA.szTip[128]字段——UTF-16 明文否则 explorer 画不出来。壳保护代码但保护不了这个必须暴露给系统的字段。所以原理就一句话szTip 明文 100% 存在于进程内存里扫描内存即可无需脱壳。配套的还有第二条更稳的路供正式产品用虽然名称读不到但监管客户端留下了机器可读的唯一标识——culcfg.ini里的场所编号num明文、ASCII、GBK 编码整体。前 6 位就是区县代码如 230225甘南县。编号 一份人工映射文件就能全自动带出名称。三、实现/步骤从内存 szTip 到 rust-cafe-tune 自动化3.1 内存扫描直接拿 szTip取证路径cclt.exe是 32 位 PE无需调试器用 PowerShell P/Invoke 三步扫描OpenProcess(PROCESS_VM_READ) → VirtualQueryEx 遍历所有 MEM_COMMIT 区域 → ReadProcessMemory 读回按 Unicode 解码 → 搜索关键词网吧/场所/监管/飞宇/电竞…一次命中地址 0x014D0000配置区黑龙江省互联网上网服务营业场所经营管理技术监管系统 V1 0 0 2 4 编号 2302252835 名称 甘南县飞宇网吧结论szTip 甘南县飞宇网吧——监管端登记的正式名称与招牌大字飞宇电竞小字网吧是同一家。验证了壳保护代码、不保护 API 参数的推断。3.2 产品化路径编号 人工映射rust-cafe-tune 的做法内存扫描是取证手段不适合每次开机都跑。正式产品rust-cafe-tune选择了编号 映射文件culcfg.ini 的 num2302252835机器可读GBK lossy 解码 → configs/ctconfig-2302252835/cafe-name.txt人工填一次飞宇电竞 → ct cafe-info 自动输出编号 区县 名称源码锚点crates/ct-cli/src/commands.rsdetect_cafe_num()L905读C:\Program Files (x86)\culclientYkt\culcfg.inilossy 解码逐行找numresolve_cafe()L922显式--cafe优先否则探测编号 → 存在configs/ctconfig-编号/目录则自动采用cafe_info()L938输出编号/主机/IP/MAC/服务器/区县再读cafe-name.txt补名称。实测输出[cafe] 自动识别网吧配置: ctconfig-2302252835 [cafe] 场所编号: 2302252835 [cafe] 所在区县: 甘南县 [cafe] 网吧名称: 飞宇电竞从此用户不必手动说我在飞宇电竞——ct 每次启动自动探测编号、自动加载对应网吧的ctconfig-编号/配置目录鼠标/音量/壁纸/软件清单全在里面。四、总结/验证rust-cafe-tune 是网吧个性化配置自动化工具本文验证了三条事实并沉淀为一个开源工具SOUI 自绘 VMProtect 混淆流量 名称读不到静态全灭壳不保护 API 参数→ 内存扫描Shell_NotifyIconW的 szTip 拿到明文甘南县飞宇网吧无需脱壳场所编号culcfg.ini num是唯一可靠机器标识前 6 位即区县。rust-cafe-tunecrates/ct-cli二进制ct.exe把第 3 条做成全自动ct cafe-info—— 一键输出编号/区县/名称ct --cafe 名—— 手动指定不指定则自动探测编号并加载ctconfig-编号/配置每个网吧的个性化设置鼠标加速度/滚动方向、显示器亮度、壁纸、音量、软件安装清单独立成目录还原卡重启后 ct 仍能自动归位跨网吧对比每家cclt.exe的 SHA256 szTip 编号可做成对比表判断是否同模板镜像。这套从死路SOUI 自绘到活路API 参数明文 编号映射的排查完整记录在仓库docs/监管客户端分析记录.md与docs/cclt-sztip-分析.md。若你也在维护网吧/网咖的自动化部署这可能是把人工报网吧名消灭掉的一条可行路径。
返回列表