StarUML破解

缘起

    0、因为qiong😂

    1、之前在windows下时,使用的是EA来做类图绘制,换到mac上之后,一直没有找到特别好的画类图的软件,最后就选择了不怎么好但是能画图的staruml。

    2、开始使用的2.x版本,可以使用修改licens的js文件的方法进行修改,后来brew升级到3.x版本后失效了

    因此写下此文,用来记录下折腾记录(注:如果有闲钱,还是建议买一个的,支持正版吧)

折腾过程

1、staruml 2.x破解

    在2.x时代,破解是比较方便的,手动修改下js文件即可,方法如下(参考自https://gist.github.com/trandaison/40b1d83618ae8e3d2da59df8c395093a  )

    

1、安装完成StartUML后, 修改 LicenseManagerDomain.js 文件,内容如下:

mac下文件路径在/Applications/StarUML.app/Contents/www/license/node/LicenseManagerDomain.js,linux下在/opt/staruml/www/license/node/LicenseManagerDomain.js

/** * File name: LicenseManagerDomain.js 
    * Mac OS: /Applications/StarUML.app/Contents/www/license/node/ 
    * Linux: /opt/staruml/www/license/node/ 
*/
(function () {    "use strict"; 
    var NodeRSA = require('node-rsa'); 
    function validate(PK, name, product, licenseKey) {        return{
           name: "sontd",
           product: "StarUML",
           licenseType: "vip",
           quantity: "unlimited",
           licenseKey: "no, thanks!"
        };
    } 
    function init(domainManager) {        if (!domainManager.hasDomain("LicenseManager")) {            domainManager.registerDomain("LicenseManager", {major: 0, minor: 1});
        }        domainManager.registerCommand(            "LicenseManager", // domain name
            "validate",       // command name
            validate,         // command handler function
            false,            // this command is synchronous in Node ("false" means synchronous")
            "Validate License",
            [
                {
                    name: "PK",
                    type: "string",
                    description: "PK"
                },
                {
                    name: "name",
                    type: "string",
                    description: "name of license owner"
                },
                {
                    name: "product",
                    type: "string",
                    description: "product name"
                },
                {
                    name: "licenseKey",
                    type: "string",
                    description: "license key"
                }
            ],
            [
                {
                    name: "result", // return values
                    type: "object",
                    description: "result"
                }
            ]
        );
    } 
    exports.init = init;
 
}());

2、完成后,打开staruml进入 Help > Enter License ,填写在 LicenseManagerDomain.js.里的配置,上面示例里的配置如下:

name: "sontd"
License Key: "no, thanks!"

3、至此已经修改完成


2、staruml 3.x破解

在3.x版本中,上面的方法已经行不通了,需要采用对app的资源重新打包的方法实现(参考https://www.jianshu.com/p/b6b1f6ad0bd6 )


1、安装asar

sudo npm install -g asar

2、提取 app.asar

下载的StarUML,右键显示包内容
进入Contents/Resources/
把app.asar复制出来

3、解压app.asar

asar extract app.asar app

4、修改解压出来的app/src/engine/license-manager.js

将checkLicenseValidity函数改成

  checkLicenseValidity () {    this.validate().then(() => {
      setStatus(this, true)
    }, () => {
      setStatus(this, true)
    })
  }

 5、重新打包

asar pack app app.asar

6、将打好的包放回原处(注意需要sudo才行,因为application目录需要root权限)

sudo cp app.asar [原来的位置]

7、如果是高版本系统,可能会提示应用已经损坏,是否移入垃圾篓,这是因为在最新版本系统上做了安全性的校验,我们修改了包内容,所以校验不过,此时运行如下命令即可

sudo xattr -c  -r "/Applications/StarUML.app"

8、重新打开staruml,此时已经破解完毕啦


总结

之所以破解,还是因为qiong吧,如果有条件还是支持正版吧!当然了,个人认为这个staruml并不是很好用的!!!


参考文档

https://gist.github.com/trandaison/40b1d83618ae8e3d2da59df8c395093a

https://www.jianshu.com/p/b6b1f6ad0bd6


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。