2008年3月21日“外商投资企业联合年检移动证书”的悲哀
先不说那个什么金税工程(就是那个在 Winows Vista 时代还刚刚从 Windows 98 过渡到 2000,非要买联想税控专用机才能用的鬼东西),在企业年检方面,利用 Web,本来是个多好的主意,可是总有人不肯在技术上花钱,或者把大量资金给了技术不够强的研发者……
自从 2006——2007 年流氓软件和木马、病毒泛滥后,人们已经开始明白,Unix、Linux 那种隐藏真正管理帐号的做法是多明智,我们的软件业老大 Microsoft 也在 Windows Vista 里增加了“使用最高权限运行”的功能来区分“使用”和“管理”级操作的不同。所以即使不考虑 Unix、Linux 和 MAC OS X,也不考虑 Windows 各服务器版本,你也应该在常用 PC Windows 平台上考虑的权限问题啊。
例子也不用多举,就拿大家用得最多的 Windows XP 来说吧,企业里大多都是用 XP Pro 的,给一般员工 User(普通用户)帐号,只有 MIS 部门或独立网管才有 Administrator(单机管理员)或 DA (域管理员)帐号。一个给非 IT 职员用的软件甚至硬件,自然应该给于 User 帐号至少是此软件的使用权限。可是我们伟大的、来自 www.lhnj.gov.cn (哇塞~“.gov.cn”啊~)的软件——“外商投资企业联合年检移动证书”组件包,被管理员安装进计算机后,User 帐号是不能使用的;即使是暂时把 User 提升到 Administrator 后给自己安装,装完后再降级成 User,依然不能使用自己安装的软件……别说 User,连 Power User 也不行,一定要最高权限!
我观察了安装时的动作,安装程序往 C:\system32\ 植入了以下文件:
ZJ_ALG.dll
ZJMSKEY.sig
ZJMSKEY.dll
ZJMSKEY0.dll
ZJ_SafeCN.dll
ZJWebSign.dll
ZJDispSeal.dll
然后在 C:\Program Files\ 创建了 lhnj 目录,里面放了卸载程序和卸载用的信息。同时在注册表里这些地方也做了添加:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\ZHIJIU MASSKEY CSP1.0.0]
[HKEY_CLASSES_ROOT\TypeLib\{638120E4-16B0-4BA3-A1D2-97E12F27670A}]
[HKEY_CLASSES_ROOT\TypeLib\{184644CA-2AF6-415E-AA60-CD3E79DA8CAF}]
[HKEY_CLASSES_ROOT\CLSID\{0D3280A9-61AF-4EFA-BF47-BF94062D2942}]
[HKEY_CLASSES_ROOT\TypeLib\{82DE15C6-5B19-4338-8D8C-D425D745F2AB}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{638120E4-16B0-4BA3-A1D2-97E12F27670A}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{184644CA-2AF6-415E-AA60-CD3E79DA8CAF}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0D3280A9-61AF-4EFA-BF47-BF94062D2942}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{82DE15C6-5B19-4338-8D8C-D425D745F2AB}]
于是很辛苦地把这些文件和注册表都给于此 User 完全控制的权限,结果依然不能使用……难道有漏网之鱼?不管怎么说,这些已知的文件是否有足够调用的权限,用 User 帐户登录后去 regsvr32 就知道了,结果很重要的 ZJMSKEY.dll、ZJMSKEY0.dll 在 User 下依然权限不够……
结果自然是不用说了,人家等着用这个软件呢,我只能给此员工 Administrator 的权限……
如果连我们的政府部门花钱整的技术还停留在 Windows 98 的理念上,我真是很失望,因为今年是 2008 年。