方法:
- 找到文件C:\Program Files\SASHome\SASFoundation\9.4\sashost.dll,用任何一款支持binary文件的编辑器打开它(我用UltraEdit)。
- 定位到文件位置44 0F B7 4C 24 20处(UltraEdit下按Ctrl-F,输入44 0F B7 4C 24 20后回车)。
- 此处开始的文件内容应该是‘44 0F B7 4C 24 20’ ……,把这6个字节改为’41 B9 E0 07 00 00’ 然后存盘。
原理:
这一改动使得SAS内部看到的时间永远在2016年,月和日则保持不变。改动后的最后4个字节‘E0 07 00 00’ 就是2016的16进制 (0x000007e0, 因为Little Endian的原因要从右向左读)。
如果你的授权文件是2015年有效,则改为‘DF 07 00 00’。
如果授权文件从2015年4月到2016年3月有效,那你可能要做两个破解版,一个2015年的在4月到12月用,另一个2016年的在1月到3月用。
副作用:
这一改动不仅仅影响授权检查,也会影响SAS的其他部分,比如Output的Title中如果包含日期,这个日期也受影响。另外Log里面报告的Real Time计算也不对了,但报告的CPU Time还是对的。对我来说不是什么大问题。
====================== 补充 ====================
SAS 9.3版本 64位的改法一样,只是修改的位置变成0x1CDAE。2013的16进制码是DD 07 00 00,2014是DE 07 00 00. 注意备份。
==================== 补充 2 ===================
SAS 9.3版本 32位的这样改,使得SAS内部检查授权的时间固定在2013年:
定位到文件偏移量0x16E49处,修改4个字节,从 “0F B7 75 DC” 改为 “66 BE DD 07”
如果要固定在2014年,则改为“66 BE DE 07”
鼓励自己动手修改。不想自己动手的也可以下载附件。下载链接在第15楼。包里有sashost_2013.dll 到 sashost_2017.dll。改名为sashost.dll后覆盖原文件即可。