概述

好吧,虽然标题看上去没啥邪恶的,但是其实这就是个破解 StarUML 的教程,因为看不爽时不时就给我弹出个确认框,虽然我本来是想找个序列号就行了,但是没想到居然有简单可行的处理方式,所以就随手记录一番。根据我的实验,2.5 和 3.0 版本的都可以用,不过不通用,这是两种不同的解决方式,3.0 的麻烦一些,2.5 的简单。

StarUML 2.5 破解

  1. 将下面的文件保存为 LicenseManagerDomain.js
  2. sudo cp /Applications/StarUML.app/Contents/www/license/node/LicenseManagerDomain.js LicenseManagerDomain.js.backup
  3. cp LicenseManagerDomain.js /Applications/StarUML.app/Contents/www/license/node/LicenseManagerDomain.js
  4. Open StarUML and go to Help > Enter License.
  5. Enter the name and the License Key in the LicenseManagerDomain.js.
  1. /**
  2. * File name: LicenseManagerDomain.js
  3. * Mac OS: /Applications/StarUML.app/Contents/www/license/node/
  4. * Linux: /opt/staruml/www/license/node/
  5. */
  6. (function () {
  7. "use strict";
  8. var NodeRSA = require('node-rsa');
  9. function validate(PK, name, product, licenseKey) {
  10. return{
  11. name: "liqiang",
  12. product: "StarUML",
  13. licenseType: "vip",
  14. quantity: "unlimited",
  15. licenseKey: "https://liqiang.io"
  16. };
  17. }
  18. function init(domainManager) {
  19. if (!domainManager.hasDomain("LicenseManager")) {
  20. domainManager.registerDomain("LicenseManager", {major: 0, minor: 1});
  21. }
  22. domainManager.registerCommand(
  23. "LicenseManager", // domain name
  24. "validate", // command name
  25. validate, // command handler function
  26. false, // this command is synchronous in Node ("false" means synchronous")
  27. "Validate License",
  28. [
  29. {
  30. name: "PK",
  31. type: "string",
  32. description: "PK"
  33. },
  34. {
  35. name: "name",
  36. type: "string",
  37. description: "name of license owner"
  38. },
  39. {
  40. name: "product",
  41. type: "string",
  42. description: "product name"
  43. },
  44. {
  45. name: "licenseKey",
  46. type: "string",
  47. description: "license key"
  48. }
  49. ],
  50. [
  51. {
  52. name: "result", // return values
  53. type: "object",
  54. description: "result"
  55. }
  56. ]
  57. );
  58. }
  59. exports.init = init;
  60. }());

StarUML 3.0.1 破解

升级到 3.0.1 之后,验证文件不再放在本地的目录中了,而是放在了打包文件里面了,所以需要先解压出应用,然后替换文件之后,再打包回去。

  1. 安装asar

    1. # npm install -g asar
  2. 解压app.asar

  3. 修改验证文件

    1. # vim app/src/engine/license-manager.js

    将第 124 行修改成以下形式:

  4. 打包 app

    1. # asar pack app app.asar
  5. 重启 StarUML 即可。

Ref

  1. StarUML
  2. StarUML 3.0 破解方法