zoukankan      html  css  js  c++  java
  • StarUML3.x的破解方法

    StarUML3.x破解方法

    StarUML由2.0更新到3.0。原来的破解方法,修改license验证函数的方式不能用了。安装位置都变了,已经找不到LicenseManagerDomain.js这个文件了。那该怎么办?老司机告诉大家解决办法。

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

    %LOCALAPPDATA%ProgramsStarURML
    esourcesapp.asar

    或者

    C:Program FilesStarUML
    esources


    我们可以通过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 

    正因为当初对未来做了太多的憧憬,所以对现在的自己尤其失望。生命中曾经有过的所有灿烂,终究都需要用寂寞来偿还。
  • 相关阅读:
    C#题型补充
    php数组
    PHP字符串
    动态网页制作PHP常用的正则表达式
    Objective-C:Foundation框架-常用类-NSArray
    Objective-C:Foundation框架-常用类-NSMutableString
    Objective-C:Foundation框架-常用类-NSString全解
    Objective-C:Block
    Objective-C:Category
    Objective-C:@property参数详解
  • 原文地址:https://www.cnblogs.com/candlia/p/11920085.html
Copyright © 2011-2022 走看看