前言
正所謂,工欲善其事必先利其器,UML作為唯一的標准的建模語言,在推廣上,有不可置疑的地位,那么我們需要有一款好用的建模工具。
貢獻榜
工具下載
Node.js: 在 Windows 操作系統,我們需要 npm 命令安裝 asar 工具. 如果你已安裝 asar 工具,可忽略此步驟.
官網下載: https://nodejs.org/zh-cn/
百度雲:
鏈接:https://pan.baidu.com/s/1_k2QHotAJe5wxV4fFAZS2g?pwd=6666
提取碼:6666
StarUML: UML 建模工具.
官網下載: https://staruml.io/download
百度雲: StarUML_4.1.6版本的破解版。請根據根目錄下的 ReadMe.md 文件提示操作
鏈接:https://pan.baidu.com/s/1QXl1ry_Qk2KJcDXBxURdnQ?pwd=6666
提取碼:6666
目錄
StarUML_4.1.6安裝
在下載StarUML安裝包后,在本地應該有一個StarUML Setup x.x.x的exe可執行文件,雙擊安裝包后會自動安裝在本地的C:/Program Files/StarUML目錄。
StarUML.exe是建模工具的可執行文件,正常打開后需要注冊才能正常的使用。

Asar工具安裝
在Windows操作系統中,安裝Asar工具包是需要借助Node.js工具的功能的,在下載Node.js后,本地有node-vx.x.x-x64.msi的安裝包,雙擊打開后一直Next即可。
安裝成功后打開CMD窗口輸入npm -v命令驗證,返回 x.x.x版本信息即表示安裝成功了。

在成功安裝Node.js工具后,我們使用Node.js工具包中的npm命令安裝aras命令。在CMD窗口輸入npm install -g asar命令安裝就好了。
這里應該是直接安裝成功的,但我看到提示說有新版本npm的包使用,讓我輸入 npm install -g npm@9.2.0更新。你可以直接忽略此信息。到這里,我們的准備環境都做好了,可以開始我們的正經工作了。

StarUML_4.1.6破解
StarUML的執行的源碼就是包含在app.aras文件,所以我們破解的原理就是改動注冊部分的代碼。
想象以下,程序員X在設計注冊功能的時候,不管它如何設計,在源碼中都應該會有驗證成功和失敗的處理,我們管它的實現是怎么回事,我們只需要將注冊驗證成功的代碼copy到驗證失敗的地方就可以了不是。
當然,破解的方案有很多種,而我們選擇最簡單、粗暴的方案而已。畢竟我們的需求就很簡單、粗暴,嘿嘿嘿~~~
好的,我們理論上就說完了,那么就整理一下需要做的事情。
1.將app.aras文件從C:/Program Files/StarUML/resources復制到桌面,避免在C盤目錄下存在權限問題,導致我們操作失敗的情況。
2.在桌面打開CMD。輸入asar extract app.asar app_dir命令將app.asar文件解壓到app_dir目錄。
3.在{work_dir}/app_dir/src/engine/license-manager.js文件修改注冊驗證部分的代碼。
4.將修改好的app_dir目錄壓縮成app.aras文件,壓縮命令是 asar pack app_dir app.asar,並且拷貝到C:/Program Files/StarUML/resources目錄即可。
// {work_dir}/app_dir/src/engine/license-manager.js
checkLicenseValidity () {
if (packageJSON.config.setappBuild) {
setStatus(this, true)
} else {
this.validate().then(() => {
setStatus(this, true)
}, () => {
setStatus(this, false)
UnregisteredDialog.showDialog()
})
}
}
//將上面 checkLicenseValidity() 的代碼改成以下代碼
checkLicenseValidity () {
if (packageJSON.config.setappBuild) {
setStatus(this, true)
} else {
this.validate().then(() => {
setStatus(this, true)
}, () => {
// 驗證失敗的代碼段
setStatus(this, true)
})
}
}
//---------------------------分割-----------------------------
/**
* Check the license key in server and store it as license.key file in local
*
* @param {string} licenseKey
*/
register (licenseKey) {
return new Promise((resolve, reject) => {
$.post(app.config.validation_url, {licenseKey: licenseKey})
.done(data => {
var file = path.join(app.getUserPath(), '/license.key')
fs.writeFileSync(file, JSON.stringify(data, 2))
licenseInfo = data
setStatus(this, true)
resolve(data)
})
.fail(err => {
setStatus(this, false)
if (err.status === 499) { /* License key not exists */
reject('invalid')
} else {
reject()
}
})
})
}
//將上面的 register (licenseKey) 代碼改成以下代碼
register (licenseKey) {
return new Promise((resolve, reject) => {
$.post(app.config.validation_url, {licenseKey: licenseKey})
.done(data => {
var file = path.join(app.getUserPath(), '/license.key')
fs.writeFileSync(file, JSON.stringify(data, 2))
licenseInfo = data
setStatus(this, true)
resolve(data)
})
.fail(err => {
// 注冊失敗的代碼段
setStatus(this, true)
})
})
}
完成以上的操作步驟后,我們再次打開StarUML.exe后就沒有那個需要注冊的彈窗了。開始你的建模之旅吧~~

