StarUML 3.0 破解方法

StartUML是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj)
参考https://blog.csdn.net/sam_shan/article/details/80585240

下载

首先下载安装文件http://staruml.io/

破解

StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在“%LOCALAPPDATA%\Programs\StarURML\resources\app.asar”或者“C:\Program Files\StarUML\resources
我们可以通过asar工具解压修改达到破解目的。具体操作如下:
for mac
注意:安装完成后运行一次软件,否则破解后会报“软件已被破坏”的错误。

npm install -g asar
asar extract app.asar app

##for mac
cd /Applications/StarUML.app/Contents/Resources/
asar extract app.asar app

修改源码

通过命令行将程序解压到app目录下。真正的验证license的代码在app\src\engine\license-manager.js

/**
   * Check license validity
   *
   * @return {Promise}
   */
  validate () {
    return new Promise((resolve, reject) => {
      try {
        // Local check
        var file = this.findLicense()
        if (!file) {
          reject('License key not found')
        } else {
          var data = fs.readFileSync(file, 'utf8')
          licenseInfo = JSON.parse(data)
          var base = SK + licenseInfo.name +
            SK + licenseInfo.product + '-' + licenseInfo.licenseType +
            SK + licenseInfo.quantity +
            SK + licenseInfo.timestamp + SK
          var _key = crypto.createHash('sha1').update(base).digest('hex').toUpperCase()
          if (_key !== licenseInfo.licenseKey) {
            reject('Invalid license key')
          } else {
            // Server check
            $.post(app.config.validation_url, {licenseKey: licenseInfo.licenseKey})
              .done(data => {
                resolve(data)
              })
              .fail(err => {
                if (err && err.status === 499) { /* License key not exists */
                  reject(err)
                } else {
                  // If server is not available, assume that license key is valid
                  resolve(licenseInfo)
                }
              })
          }
        }
      } catch (err) {
        reject(err)
      }
    })
  }

这是个典型的javascirpt Promise。启动后会调用validate函数检查license。

checkLicenseValidity () {
    this.validate().then(() => {
      setStatus(this, true)
    }, () => {
      // 原来的代码,如果失败就会将状态设置成false
      // setStatus(this, false) 
      // UnregisteredDialog.showDialog()

      //修改后的代码
      setStatus(this, true)
    })
  }

for mac

vim app/src/engine/license-manager.js
//修改方式同上

参照上面的代码将reject的callback原代码注释掉。换成setStatus(this, true) 这样无论你注册与否都验证成功。

重打包

asar pack app app.asar

再次启动startuml,即OK.

你可能感兴趣的:(StarUML 3.0 破解方法)