引子
曾经,互联网上流传着多个“WPS 政府版”,例如:http://【移除具体链接】/WPS Office 2019 珠海市政府专业版(11.8.2.8506).exe
(目前已 404)。
这些版本均属于金山 WPS 企业版,并且使用 OEM 配置实现各种定制化功能(例如选择部门列表、加载界面 Logo、部分功能定制)。
调查
1
2
3
4
5
6
7
| 名称: WPS Office 2019 珠海市政府专业版(11.8.2.8506).exe
大小: 204752016 字节 (195 MiB)
CRC32: C8542180
CRC64: 0BA5F54C38AF0252
SHA256: 07b87db783e2b5e0fa18ecc5b30afd1ac0dda729d293fe8c5ce3533f4adac02c
SHA1: 55468ca9bc8704a36c4e59e009e3d181a994026b
BLAKE2sp: 317f75c43da8c156f386099c6f50687d8e88aadf4c5226dfdbd06e01befcdffa
|
通过使用7-Zip
提取样本WPS Office 2019 珠海市政府专业版(11.8.2.8506).exe
内文件,可以看到以下文件夹:
1
2
| ├─$PLUGINSDIR
└─$_11_
|
其中,$PLUGINSDIR
目录下的文件未见明显作用,$_11_
目录下的文件是安装程序及 OEM 配置文件。
对于$_11_
目录下的文件,可以猜测其作用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| │ $EXEFILE # 安装程序,可以直接运行,或添加exe后缀名双击运行
│ oem.ini # OEM配置文件
│ oem_enterprise.txt # 未知,可能记录具体企业编号
│ oem_static.exe # 未知,似乎不会在这里用到
│
├─OemFile
│ ├─cfgs
│ │ └─oeminfo
│ │ locateList.txt # 邮编部门列表,按格式可修改
│ │
│ └─oem
│ companylogo.png # 企业Logo,可修改
│
└─oeminfo
oem.exe # 根据oem.ini配置,猜测为处理OEM配置的程序
settings.reg # 根据oem.ini配置,猜测为oem.exe会使用的安装时注册表文件
uninstall.reg # 根据oem.ini配置,猜测为oem.exe会使用的卸载时注册表文件
|
oem_enterprise.txt
其中,X 代表一位数字,内容已脱敏。
oem.ini
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
| ;/DWPS_SETUP /DSETUP_ICON=setup_2019_ep
[feature]
【移除非必要内容】
[Support]
Support2016SN=true
[Setup]
Sn=【移除序列号】
UpdateSvrCustomAddress=http://updatepro.wps.cn/updateserver/update
LocateUser=【移除具体OEM名称】
FinishActionFile=oeminfo\oem.exe
FinishActionParameter=/copydir=OemFile\oem /ShellVarContext=current /RelativeDir=INSTDIR /todir='oem'
FinishActionWait=1
FinishActionFile2=oeminfo\oem.exe
FinishActionParameter2=/copydir=OemFile\cfgs\oeminfo /ShellVarContext=current /RelativeDir=INSTDIR /todir='office6\cfgs\oeminfo'
FinishActionWait2=1
PlacedDir3=
FinishActionFile3=oeminfo\oem.exe
FinishActionParameter3=/exefile='office6\cfgs\oeminfo\Install.exe' /ShellVarContext=current /RelativeDir=INSTDIR
FinishActionWait3=1
FinishActionFile4=oeminfo\oem.exe
FinishActionParameter4=/regfile=settings.reg
FinishActionWait4=1
UninstActionFile=office6\cfgs\oeminfo\oem.exe
UninstActionParameter=/regfile=uninstall.reg
UninstActionWait=1
UninstActionFile2=office6\cfgs\oeminfo\oem.exe
UninstActionParameter2=/ShellVarContext=current /RelativeDir=INSTDIR /rmdir='oem'
UninstActionWait2=1
UninstActionFile3=office6\cfgs\oeminfo\oem.exe
UninstActionParameter3=/ShellVarContext=current /RelativeDir=INSTDIR /rmdir='office6\cfgs\oeminfo'
UninstActionWait3=1
InstExeCount=4
UninstExeCount=3
|
其中,[feature]
疑似配置功能信息,取决于 OEM 需求;
[Support]
中的Support2016SN=true
必须存在,下文[Setup]
的Sn
才能正常使用;
LocateUser
一旦存在,安装程序就会在安装前提示用户选择locateList.txt
中的部门名称,若此文件不存在则会因无法选择导致无法进行下一步安装。
settings.reg
【移除无分析意义的内容】
修改注册表中 WPS 的默认保存格式,推测为本样本安装包 OEM 的需求。
uninstall.reg
【移除无分析意义的内容】
一些卸载注册表的操作。
locateList.txt
1
2
3
4
5
6
| 【移除具体机构名称】
1.【移除六位数邮编】#【移除部门名称】
2.【移除六位数邮编】#【移除部门名称】
【移除不必要的重复举例】
|
第一行为机构名称,空两行,此后格式为:编号.邮编#部门名称
,每行一个部门,邮编和部门名称可以为空。文件最后的两个空行似乎不是必要的。
因此,如下的示例是可行的:
1
2
3
4
5
| 我是机构名称
1.000000#我是部门名称
2.#
|
关于 Sn
oem.ini
中提供的 Sn 不能从 WPS Office 中手动输入注册,其仅可在安装时通过oem.ini
提供。
安装程序和最简 OEM 安装配置
WPS Office Pro 的任意版本安装程序(包括官网提供的试用版)似乎都会尝试获取同目录下的oem.ini
文件,若存在则会自动使用。
在本文发布之时,官网提供的试用版下载链接为https://wps-cn-ep.ks3-cn-beijing.ksyun.com/wps/download/ep/WPS2019/WPSPro_11.8.2.11542.exe
Archive
因此,最简的可激活 OEM 安装配置方法为:
- 下载官网提供的试用版安装程序
- 在安装程序所在目录下建立
oem.ini
文件,内容为:
1
2
3
4
5
| [Support]
Support2016SN=true
[Setup]
Sn=【自行填入序列号】
|
这样,安装程序会自动激活 WPS Office Pro。
Sn
在研究中,我们使用了从WPS Office 2019 珠海市政府专业版(11.8.2.8506).exe
中提取的序列号用于测试,请自行获取样本安装程序以便手动提取。
关于金山 PDF 专业版
金山 PDF 专业版似乎不使用oem.ini
中的SN
来获取序列号(但仍从中获取其他配置信息)。在本文发布之时,官网提供的试用版下载链接为https://zt-pdf.wpscdn.cn/wps/download/ep/PDF/PDFPro_11.8.0.8857.exe
一个样本是这样的:
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
| ;/DEP_PDF_SETUP /DUSER_LEVEL
[Support]
QingLoginOfflineMode=true
DocTabRoamingGuide=false
CloudFonts=false
CommandTriggerInfoCollect=false
GoogleAnalytics=false
DisableGlobalInfoCollect=true
[Server]
IntranetPluginsAuthServer = "【移除非必要内容】"
IntranetPluginsICServer = "【移除非必要内容】"
[Setup]
SN=【移除序列号,注意这里的没有用】
SnInvisiable=1
PlacedDir=
FinishActionFile=oeminfo\oem.exe
FinishActionParameter=/exefile='office6\ksomisc.exe' /fileparam='-addsn 【移除序列号,注意这里才有用】' /ShellVarContext=current /RelativeDir=INSTDIR
FinishActionWait=1
FinishActionFile2=oeminfo\oem.exe
FinishActionParameter2=/regfile=test.reg
FinishActionWait2=1
UninstActionFile=office6\cfgs\oeminfo\oem.exe
UninstActionParameter=/regfile=xiezai.reg
UninstActionWait=1
InstExeCount=2
UninstExeCount=1
|
另一个样本:
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
| ;/DEP_PDF_SETUP /DUSER_LEVEL
[feature]
【移除非必要内容】
[Support]
IntranetVersion=true
IntranetDrive=false
IntranetPluginsVersion=true
IntranetPluginsAuthType=2
QingLoginOfflineMode=true
DocTabRoamingGuide=false
CloudFonts=false
CommandTriggerInfoCollect=false
GoogleAnalytics=false
EnterpriseDocpermission=true
[Server]
DomainCfgLocalCustomPath = "cfgs/domain.cfg"
IntranetPluginsAuthServer = "【移除非必要内容】"
IntranetPluginsICServer = "【移除非必要内容】"
[Setup]
ProductVersion=【移除具体OEM名称】
StartMenuDir=【移除具体OEM名称】
SnInvisiable=1
UpdateSvrDefaultAddress=【移除非必要内容】
UpdateSvrCustomAddress=【移除非必要内容】
FinishActionFile=oeminfo\oem.exe
FinishActionParameter=/copydir=OemFile\office6 /ShellVarContext=current /RelativeDir=INSTDIR /todir='office6\cfgs'
FinishActionWait=1
PlacedDir2=
FinishActionFile2=oeminfo\oem.exe
FinishActionParameter2=/exefile='office6\ksomisc.exe' /fileparam='-addsn 【移除序列号,注意这里的没有用】' /ShellVarContext=current /RelativeDir=INSTDIR
FinishActionWait2=1
FinishActionFile3=oeminfo\oem.exe
FinishActionParameter3=/regfile=【移除非必要内容】
FinishActionWait3=1
UninstActionFile=office6\cfgs\oeminfo\oem.exe
UninstActionParameter=/regfile=test.reg
UninstActionWait=1
InstExeCount=3
UninstExeCount=1
|
根据FinishActionParameter
行,我们很容易推断出,这个配置可以手动完成。即在 WPS PDF 安装目录C:\Program Files (x86)\Kingsoft\Kingsoft PDF\版本号\
下执行.\office6\ksomisc.exe -addsn 【移除序列号,注意这里才有用】
。
尽管如此,和金山 WPS 企业版不同的是,WPS PDF 的序列号仍然需要联网认证才能正常使用。
WPS Pro 2023
参考:WPS Office 的 OEM.INI 配置文件加密算法的逆向分析,文中提到的加密算法,反过来解密。
下载链接:https://wps-cn-ep.wpscdn.cn/wps/download/ep/WPS2023/WPSPro_12.8.2.18205.exe
(需要 Referer 为https://ep.wps.cn/downloads
) Archive
无法在不 Patch 安装程序的情况下使用自定义配置文件,但自行输入序列号或许是可能的。
这部分 Credits to WPS Office 2023 雨糖科技特别版。
也参考
2019 from 423down
WPS VBA 安装程序备份
2023 from 423down
RainCandyTech/WPSOfficeConf