WPS Office Pro(金山WPS企业版)和金山PDF专业版的OEM配置方法

引子

曾经,互联网上流传着多个“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

1
XXXX_XXXX

其中,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

除非另有说明,此内容使用 CC BY-SA 4.0 许可。
提交: 5a1bbd02   环境: production   Hugo: 0.139.3   时间: 1733917433357452
作者对于因使用或解读所提供内容而导致的任何直接或间接后果不承担任何责任。
使用 Hugo 构建
主题 StackJimmy 设计