在使用网狐组件系列搭建互动系统的过程中,我们经常会接触到一个非常关键的配置文件 ——
ServerInfo.INI
。这个文件表面看起来是一堆乱码,其实它隐藏着客户端显示的登录服务器信息,以及与之通信的服务地址列表。
本篇文章将结合实际截图,从文件结构、加密机制、配置含义三个角度,手把手带你读懂 ServerInfo.INI
的秘密。
一、什么是 ServerInfo.INI?
这是客户端启动时用来读取服务器列表的配置文件,通常位于 Client\\Config\\
或类似路径下。它记录了多个服务器条目,包括名称、地址、域名等信息。
未解密版本的 ServerInfo.INI 文件
注意上图中,每一段都是一串十六进制字符串,看似不可读,但其实它们都可以通过异或加密(XOR)解密恢复出原始内容。
二、ServerInfo.INI 文件结构解析
以【图1】为例,整个文件大致分为三块:
[Global Info]
LastServerName=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[ServerInfo]
ItemCount=3
ItemDescribe1=xxxxxxxxxxxxxxxxxxxxx
ItemDescribe2=xxxxxxxxxxxxxxxxxxxxx
ItemDescribe3=xxxxxxxxxxxxxxxxxxxxx
[xxxx]
ServerAddr=16777343
ServerDomain=xxxxxxxxxxxxxxxxxxxxxxxx
字段说明如下:
-
LastServerName
:上次登录的服务器名称(加密) -
ItemCount
:服务器数量 -
ItemDescribe1/2/3
:每一项服务器名称描述(加密) -
ServerAddr
:服务器 IP(十进制加密,16777343 = 127.0.0.1) -
ServerDomain
:服务器域名(加密)
三、解密后的样子
经过 XOR 解密之后,我们可以得到如下结构化信息:
解密后的 ServerInfo.INI 文件内容
可以看到:
-
ServerName、ItemDescribe 字段已经被还原为中文服务器名称
-
ServerAddr 显示为 127.0.0.1
-
ServerDomain 解析为:
server6603.foxuc.net
四、如何解密这些加密字段?
网狐的加密采用的是最基础的 XOR(异或)操作。也就是说,加密过程是:
加密内容 = 原文 ^ 密钥
反过来:
原文 = 加密内容 ^ 密钥
而网狐中用于加密的 key 是写死在客户端源码中的,解密代码一般如下(伪代码):
for (int i = 0; i < len; i++) {
result[i] = encrypted[i] ^ xor_key[i % xor_key_len];
}
你只需要将 LastServerName
等字段提取出来,按十六进制分割成字节数组,逐个异或还原即可。
五、地址段字段详解
以图为例:
ServerAddr 与 ServerDomain 加密内容
其中:
-
ServerAddr=16777343
表示127.0.0.1
(这类十进制 IP 用long to IP
工具即可还原) -
ServerDomain=xxxxxxx
解密后为实际域名地址,例如server6603.foxuc.net
这说明即使端口或域名被加密,网狐客户端仍然可以正常发起通信请求,前提是 ServerInfo.INI 解密逻辑正确。
六、注意事项与实战技巧
-
注意换行符!
如图中描述,复制文本时不能包含换行符,否则客户端读取会失败。推荐:记事本 → 格式 → 取消自动换行。
-
不要手动改地址!
因为这些内容是加密的,手动修改内容将导致客户端无法正常解析,建议使用配套工具修改。
-
支持多服务器入口
可配置多个
ItemDescribe
和对应地址,客户端启动时会列出多个登录服务器,方便多地区或多个平台入口使用。
总结
ServerInfo.INI
文件虽然内容表面是乱码,但本质上是经过异或加密后的服务器描述信息。理解其结构与解密原理后,不但能更灵活地配置客户端,还能进一步开发与之配套的服务端识别方案。