@paynev
2019-06-19T05:42:06.000000Z
字数 1586
阅读 821
技巧
StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在%LOCALAPPDATA%\Programs\StarURML\resources\app.asar
我们可以通过asar工具解压修改达到破解目的。
打开Node.js官网
找到合适的版本下载,我这里选的是长期支持版
命令行里输入:
sudo npm install -g asar
注意: 如果提示-bash: npm: command not found,则需要手动添加环境变量 终端输入export
PATH=/usr/local/bin:$PATH即可
简单来说,主要以下几个步骤:
提取Contents/Resources/中的app.asar
解压app.asar
修改解压出来的app/src/engine/license-manager.js中的checkLicenseValidity函数,将setStatus(this,false)改成setStatus(this,true),并注释UnregisteredDialog.showDialog()
重新打包,放回即可
下载的StarUML,右键显示包内容
进入Contents/Resources/
把app.asar复制出来
asar extract app.asar app
我们全文搜索一下status,可以找到一个setStatus(...)的方法。我修改了一下让它总是设置为true
function setStatus (licenseManager, newStat) {if (status !== newStat) {status = newStatlicenseManager.emit('statusChanged', 'true') // status修改为'true',注意要带单引号}}
查找getLicenseInfo()函数
getLicenseInfo () {return licenseInfo}// 改为getLicenseInfo () {licenseInfo = {name: "PayneV",product: "PayneV product",licenseType: "PS",quantity: "PayneV Quantity",timestamp: "1529049036",licenseKey: "It's Cracked!!",crackedAuthor: "PayneV"};return licenseInfo}
找到checkLicenseValidity函数
将false改成true,并注释或删掉下面一行
checkLicenseValidity () {this.valIDAte().then(() => {setStatus(this, true)}, () => {// 原来的代码,如果失败就会将状态设置成false// setStatus(this, false)// UnregisteredDialog.showDialog()// 修改后的代码setStatus(this, true)})}
asar pack app app.asar
done!
著作权归原作者所有,个人只是整理总结。