Fences5破解

大类
逆向
Env
Windows
技术标签
逆向-Windows
优先级
Medium
状态
In Progress
开始日期
May 24, 2024
最后更新
May 24, 2024
Public
Public

试用注册流程:

  1. 第一次请求如下,发送确认邮件
https://activate.api.stardock.net/sas/2014-02-01/activation/trialactivate
  1. 确认后再次发送请求,得到license
 

请求加密流程

请求中包含c和p,加密时随机生成一个16byte的key,然后使用RSA+OAEP+SHA1+P1363_MGF1算法配合公钥进行加密,得到c。
key随后用于加密payload,算法为AES256 OFB,得到p。
考虑到c的计算没有引入时间戳,所以可以直接重复利用一对key和其加密后的c,无需计算RSA。
下面是一段计算好的:
key: 05 87 0B E2 FC 94 62 97 69 47 00 9F 5D 9F BA E8 iv: A0 F4 CC 52 9B D2 4F 90 10 EA C3 51 9E F3 98 45 {"clientData":{"language":"zh-CN","name":"Fences5","osVersion":"Win 6.2.26100.383","productId":2675,"productVersion":"5.5.3.2","sasVersion":"1.9.3.2353"},"email":"XXXX","localTime":"2024-05-24T12:45:36","machineData":{"diskSerial":"0000_0000_0000_0001.","macAddress":"aa-bb-cc-dd-xx-xx","machineName":"DESKTOP-1234567","motherboardId":"AAAAAAAAAAAA ","sid":"S-1-5-21-...","type":"Standard"},"source":"StardockStore"} { "c": "476B955C2A3772A47732CF2920BB4AD034DBBD43AA3472B949502515161AB543A8BFBC05D502FD31D325465D0093D46CB61A45E5D1865E110196871BA39416DFF4D1BDAA4EA38DDD0BFF2268A06ECEF5762D7791A49E03193456B570A9E77285C83C6474650821C4A6E8C98E5F2905A8A759C9435B5BE8475D7E8B9B98F3CEFE", "p": "E8B570EDXXXXXXX" }
 
AES部分是CFB,但是很神奇的是PyCryptodome并不能正常解密,还有很多在线网站也不行(比如aes online tool那些),但是CyberChef直接就可以。直接从f12里面抠出来了cfb的逻辑让GPT4重写了一波。发现原因可能是CyberChef的CFB是大端序,但是按理来说这种16byte操作不应该跟byteorder相关。

更新license

看起来不能直接把license改掉,服务器返回的license信息会被写入到license.sig,然后验证后,会继续写入一个Cache.dat。文件内容还有单独的格式,懒得逆了。
我们拿到的license其实就是离线激活代码,所以直接复用离线激活的流程就行。
逆一下C#写的SdDisplay.exe,发现是通过命令行里面的参数调用Ordinal1的Initialize函数,然后调用Ordinal24号的OfflineActivate函数完成离线验证。
这是fences5的命令行
"C:\Program Files (x86)\Stardock\Fences\SdDisplay.exe" -prodId=2675 -ProdName="Fences5" -company="Stardock" -forceUi="Welcome" -parentPid=40436 -prodVer="5.5.3.2" -ResponsePipe=2028
 

全自动脚本

把域名邮箱接上之后就能直接用了。定期运行即可。