Mac破解starUML
安装cnpm
npm和cnpm区别
摘自http://www.ydcss.com/archives/18#why
1、说明:因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”;
2、官方网址:http://npm.taobao.org;
3、安装:命令提示符执行npm install cnpm -g --registry=https://registry.npm.taobao.org; 注意:安装完后最好查看其版本号cnpm -v或关闭命令提示符重新打开,安装完直接使用有可能会出现错误;
注:cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm(以下操作将以cnpm代替npm)。
先安装node
- node的下载地址:http://nodejs.cn/download/
- 安装完成后测试一下,在终端输入:
node -v
,这时候就可以看到安装的node版本号 - 再输入:
npm -v
,这时候就会看到npm的版本号了
用npm安装cnpm
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
安装完后可以输入:cnpm -v
查看cnpm版本
安装starUML
- 官网下载starUML
官网地址 - 安装asar工具
sudo cnpm install -g asar
- 解压app.asar文件
安装完starUML后,找到app.asar文件:
一般在/Applications/StarUML.app/Contents/Resources/app.asar
- 解压app.asar文件
asar extract /Applications/StarUML.app/Contents/Resources/app.asar/app.asar app
使用asar解压和打包文件
$ #asar extract 压缩文件 解压目录
$ asar extract app.asar app(将app.asar压缩到当前目录下的app目录)
$ #asar pack 压缩文件夹 压缩路径含文件名
$ asar pack app app.asar(将app打包成当前目录下的app.asar文件)
- 修改源码
解压完成后,输出目录就会出现app目录,找到相关js文件进行修改(文件路径:\app\src\engine\license-manager.js)
以下是已修改完后的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)
// 1. 注释掉
/* if (licenseInfo.product !== packageJSON.config.product_id) {
app.toast.error(`License key is for old version (${licenseInfo.product})`)
reject(`License key is not for ${packageJSON.config.product_id}`)
} else { */
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)
}
})
}
// 2. 注释掉
// }
}
} catch (err) {
reject(err)
}
})
}
checkLicenseValidity () {
this.validate().then(() => {
setStatus(this, true)
}, () => {
// setStatus(this, false)
// UnregisteredDialog.showDialog()
// 3. 上面两行注释掉,修改为以下
setStatus(this, true)
})
}
- 打包文件
asar pack app app.asar
- 替换文件
把app.asar替换掉就好了
electron的asar文件查看、打包、解包工具,asar文件解密加密
在electron中,asar是个特殊的代码格式。asar包里面包含了程序猿编写的代码逻辑。默认情况下,这些代码逻辑,是放置在resource/app目录下面的,明文可见,这样的话,也就有了代码加密。
electron用到一种asar的打包文件格式,压缩工具都不支持这个,只能在node.js的命令行里搞,不能直接查看文件列表,不能编辑,很不方便。
其实asar的文件头就是一个JSON字符串,然后他在前面记录了JSON的长度,然后他以用一个数值记录了长度的长度,然后他又用一个数值记录了长度的长度的长度。当然,有用的数值是最后一个,取出JSON的长度再把JSON读出来,JSON里记录了所有文件的偏移量和文件大小,跟tar完全是两种不同的解决问题的思路。
原文源自:https://lostphp.com/blog/1010.html
软件损坏解决办法
原因:
苹果系统有一个GateKeeper保护机制(自 OSX 10.5 加入)。从互联网上下载来的文件,会被自动打上com.apple.quarantine标志,翻译过来就是免疫隔离,系统根据这个附加属性对这个文件作出限制。
sudo xattr -r -d com.apple.quarantine /Applications/StarUML.app
其中-d就表示删除扩展属性的意思,-r 表示遍历文件夹中的文件,若权限控制符中有@也会去掉。域名com.apple.quarantine为想要删除的相关信息。
参考:
https://blog.youkuaiyun.com/qq_37834488/article/details/106927758