zoukankan      html  css  js  c++  java
  • starUML破解方法(Windows10 & MAC)亲测StarUML Setup 4.0.1.exe

    StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在“%LOCALAPPDATA%ProgramsStarURML esourcesapp.asar” 
    我们可以通过asar工具解压修改达到破解目的。具体操作如下:

    1. 安装asar

    cnpm install -g asar

    2. 解压app.asar

    asar extract app.asar app

    3. 修改源代码

    通过命令行将程序解压到app目录下。真正的验证license的代码在appsrcenginelicense-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 开始工作吧

  • 相关阅读:
    亿级 Web 系统的容错性建设实践
    Spring 4支持的Java 8新特性一览
    Java多线程干货系列—(一)Java多线程基础
    Sublime Text 2 实用快捷键(Mac OS X)
    spring-事务管理
    100 个 Linux 常用命令大全
    这些年MAC下我常用的那些快捷键
    Java 容器源码分析之HashMap多线程并发问题分析
    MySQL索引结构--由 B-/B+树看
    Java 容器之 Connection栈队列及一些常用
  • 原文地址:https://www.cnblogs.com/lishanyang/p/15004285.html
Copyright © 2011-2022 走看看