StarUML5.X-3.X破解方法
如默
撰写于 2020年 07月 12 日

说明

StarUML由2.0更新到3.0。原来的破解方法,修改license验证函数的方式不能用了。本文介绍如何破解5.0-3.0版本。

前言

StarUML官网

StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在C:\Program Files\StarUML\resources\app.asar

破解步骤

1.安装asar

npm install -g asar

2.解压app.asar

asar extract app.asar app

3.修改源代码

真正的验证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)
    })
  }

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

4.重新打包替换原来的app.asar

asar pack app app.asar

结束

替换完成之后,再次运行StarUML发现已经激活了!

StarUML5.X-3.X破解方法

温馨提示:

本文最后更新于2020年07月12日,已超过1321天没有更新,若内容或图片失效,请留言反馈。

说明

StarUML由2.0更新到3.0。原来的破解方法,修改license验证函数的方式不能用了。本文介绍如何破解5.0-3.0版本。

前言

StarUML官网

StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在C:\Program Files\StarUML\resources\app.asar

破解步骤

1.安装asar

npm install -g asar

2.解压app.asar

asar extract app.asar app

3.修改源代码

真正的验证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)
    })
  }

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

4.重新打包替换原来的app.asar

asar pack app app.asar

结束

替换完成之后,再次运行StarUML发现已经激活了!

那年今日
07月
12日
赞 (1)

猜您想看

  • python比较两个表相同内容并输出

    这个代码用来比较两个sheet相同的内容,保存到新的excel中

    2023年05月18日
  • 七夕特供,一行代码写爱心~给某些人一点帮助

    七夕到了,有些人没有准备礼物,让我弄个东西,正好想起来以前看到的表白代码,记录一下

    2022年08月04日
  • 一键获取Windows聚焦壁纸并保存为jpg图片脚本

    锁屏界面Windows10聚焦所产生的图片很多都是著名摄影作品,很好看,但是Windows并不能将其设置为桌面壁纸,所以需要手动找到其保存位置,修改文件后缀名为jpg就可以保存为图片了,但是这样很麻烦,时间久了再好看的图片也会看腻,写一个脚本用来及时更新图片。

    2019年10月18日
  • AMD R5 5600G装机体验

    这两天给家里装了一台电脑,平时家人办公用的,配置不需要很高,记录一下

    2023年05月03日
  • PotPlayer实时字幕翻译合集

    最近才发现PotPlayer自带字幕实时翻译功能,看一些没有翻译的视频的时候还是比较好用的,众所周知,由于一些国内的原因,PotPlayer内置的微软翻译、谷歌翻译等都不能很方便的使用,所以找了一下国内能用的翻译,特此记录。

    2020年11月21日
  • Android Studio设置国内镜像源

    没有科学上网工具,国内无法很好的访问Android资源,特记录国内镜像配置过程。

    2019年10月17日

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论

Vaptcha 初始化中...