专业团队承接各类定制化软件系统

  • 源码跳动,年轻无畏,代码筑梦!
  • 专注定制化软件,领航海外 APP 开发,精雕出海网站,巧制小程序,匠心打造定制化系统。
  • 以创新为翼,用专业护航。
  • 突破国界限制,为全球客户定制专属数字世界,开启无限可能的科技新篇!
微信二维码

👆合作咨询和老板谈👆

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

3,656次阅读
24 条评论

共计 8737 个字符,预计需要花费 22 分钟才能阅读完成。

Xmind 介绍

Xmind 是一款 全功能 的思维导图和头脑风暴软件。像大脑的瑞士军刀一般,助你理清思路,捕捉创意。

Windows 版本激活/破解脚本

注意:必须安装 python 环境,否则报错:

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)
没有 python 环境报错截图

安装 python 环境

下载 python for windows:https://www.python.org/downloads/windows/

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)
下载安装
2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)
安装注意勾选环境变量选项
2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)
安装后验证

python 环境安装成功后,按下面流程操作:

1、下载完整脚本包:crack_xmind.zip (5.3 KB)
2、解压后执行 一键脚本 (无需管理员身份运行)

常见问题

FileExistsError

Traceback (most recent call last):
  File "C:\Users\admin\AppData\Local\Programs\Xmind\xmind.py", line 108, in <module>
    XmindKeyGen().run()
  File "C:\Users\admin\AppData\Local\Programs\Xmind\xmind.py", line 31, in run
    patch_info = self.patch()
                 ^^^^^^^^^^^^
  File "C:\Users\admin\AppData\Local\Programs\Xmind\xmind.py", line 69, in patch
    extract_asar(str(self.asar_file), str(self.crack_asar_dir))
  File "C:\Users\admin\AppData\Local\Programs\Xmind\venv\Lib\site-packages\asarPy\asar.py", line 162, in extract_asar
    a.extract(dest)
  File "C:\Users\admin\AppData\Local\Programs\Xmind\venv\Lib\site-packages\asarPy\asar.py", line 143, in extract
    raise FileExistsError()
FileExistsError
请按任意键继续. . .
2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

解决方案

卸载重装!卸载重装!卸载重装!

重要的事情说三遍,讲你的 xmind 卸载,下载重装最新版即可。不需要管理员权限运行,脚本也没问题。

解决后正常脚本输出如下图:

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

破解成功

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)
注意:需要注册登录账号后,才能看到 Pro 版本。

脚本源码

import os
import pathlib
import shutil
from abc import ABCMeta
from abc import abstractmethod
from base64 import b64encode, b64decode

from asarPy import extract_asar, pack_asar
from crypto_plus import CryptoPlus
from crypto_plus.encrypt import encrypt_by_key, decrypt_by_key

class KeyGen(metaclass=ABCMeta):
    @abstractmethod
    def generate(self):
        pass

    @abstractmethod
    def parse(self, licenses):
        pass

    @abstractmethod
    def patch(self):
        return ""

    def run(self, patch=True):
        ciphertext_licenses = self.generate()
        print(f"ciphertext_licenses: \n{ciphertext_licenses}")
        if patch:
            patch_info = self.patch()
            if patch_info:
                print(f"patch: \n{patch_info}")
        plaintext_licenses = self.parse(ciphertext_licenses)
        print(f'plaintext_licenses: \n{plaintext_licenses}')


class XmindKeyGen(KeyGen):
    def __init__(self):
        tmp_path = os.environ['TMP']
        asar_path = pathlib.Path(tmp_path).parent.joinpath(r'Programs\Xmind\resources')
        self.asar_file = asar_path.joinpath('app.asar')
        self.asar_file_bak = asar_path.joinpath('app.asar.bak')
        self.crack_asar_dir = asar_path.joinpath('ext')
        self.main_dir = self.crack_asar_dir.joinpath("main")
        self.renderer_dir = self.crack_asar_dir.joinpath("renderer")
        self.private_key = None
        self.public_key = None
        self.old_public_key = open('old.pem').read()

    def generate(self):
        if os.path.isfile('key.pem'):
            rsa = CryptoPlus.load('key.pem')
        else:
            rsa = CryptoPlus.generate_rsa(1024)
            rsa.dump("key.pem", "new_public_key.pem")
        license_info = '{"status": "sub", "expireTime": 4093057076000, "ss": "", "deviceId": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"}'
        self.public_key = rsa.public_key
        self.private_key = rsa.private_key
        self.license_data = b64encode(encrypt_by_key(rsa.private_key, license_info.encode()))
        return self.license_data

    def parse(self, licenses):
        return decrypt_by_key(self.public_key, b64decode(licenses))

    def patch(self):
        # 解包
        extract_asar(str(self.asar_file), str(self.crack_asar_dir))
        shutil.copytree('crack', self.main_dir, dirs_exist_ok=True)
        # 注入
        with open(self.main_dir.joinpath('main.js'), 'rb') as f:
            lines = f.readlines()
            lines[5] = b'require("./hook")\n'
        with open(self.main_dir.joinpath('main.js'), 'wb') as f:
            f.writelines(lines)
        # 替换密钥
        old_key = f"String.fromCharCode({','.join([str(i) for i in self.old_public_key.encode()])})".encode()
        new_key = f"String.fromCharCode({','.join([str(i) for i in self.public_key.export_key()])})".encode()
        for js_file in self.renderer_dir.rglob("*.js"):
            with open(js_file, 'rb') as f:
                byte_str = f.read()
                index = byte_str.find(old_key)
                if index != -1:
                    byte_str.replace(old_key, new_key)
                    with open(js_file, 'wb') as _f:
                        _f.write(byte_str.replace(old_key, new_key))
                    print(js_file)
                    break
        # 占位符填充
        with open(self.main_dir.joinpath('hook.js'), 'r', encoding='u8') as f:
            content = f.read()
            content = content.replace("{{license_data}}", self.license_data.decode())
        with open(self.main_dir.joinpath('hook.js'), 'w', encoding='u8') as f:
            f.write(content)
        with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'r', encoding='u8') as f:
            content = f.read()
            content = content.replace("{{old_public_key}}", self.old_public_key.replace("\n", "\\n"))
            content = content.replace("{{new_public_key}}", self.public_key.export_key().decode().replace("\n", "\\n"))
        with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'w', encoding='u8') as f:
            f.write(content)
        # 封包
        os.remove(self.asar_file)
        pack_asar(self.crack_asar_dir, self.asar_file)
        shutil.rmtree(self.crack_asar_dir)

if __name__ == '__main__':
    XmindKeyGen().run()

macOS 版本激活/破解脚本

1、下载完整脚本包:crack_xmind_macos.zip(12 KB)
2、解压后执行 xmind.py (需要python 环境,见:macOS 安装 python

python3 xmind.py

如果脚本运行正常,你会得到以下内容:

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

此时不要打开xmind,否则会得到如下反馈(xmind 已损坏,无法打开):

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

3、为解决上述报错,在命令行执行如下脚本:

sudo xattr -rd com.apple.quarantine /Applications/Xmind.app

破解成功

注册登录账号后,打开 xmind:

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

脚本源码

import os
import pathlib
import shutil
from base64 import b64decode, b64encode

from asarPy import extract_asar, pack_asar
from crypto_plus import CryptoPlus
from crypto_plus.encrypt import decrypt_by_key, encrypt_by_key
from abc import ABCMeta, abstractmethod

class KeyGen(metaclass=ABCMeta):
    @abstractmethod
    def generate(self):
        pass

    @abstractmethod
    def parse(self, licenses):
        pass

    @abstractmethod
    def patch(self):
        return ""

    def run(self, patch=True):
        ciphertext_licenses = self.generate()
        print(f"ciphertext_licenses: \n{ciphertext_licenses}")
        if patch:
            patch_info = self.patch()
            if patch_info:
                print(f"patch: \n{patch_info}")
        plaintext_licenses = self.parse(ciphertext_licenses)
        print(f'plaintext_licenses: \n{plaintext_licenses}')


class XmindKeyGen(KeyGen):

    def __init__(self):
        # tmp_path = os.environ['TMP']
        # mac 软件路径不一样,可以自己看着修改
        asar_path = pathlib.Path('/Applications/Xmind.app/Contents/Resources')
        self.asar_file = asar_path.joinpath('app.asar')
        self.asar_file_bak = asar_path.joinpath('app.asar.bak')
        self.crack_asar_dir = asar_path.joinpath('ext')
        self.main_dir = self.crack_asar_dir.joinpath("main")
        self.renderer_dir = self.crack_asar_dir.joinpath("renderer")
        self.private_key = None
        self.public_key = None
        self.old_public_key = open('old.pem').read()

    def generate(self):
        if os.path.isfile('key.pem'):
            rsa = CryptoPlus.load('key.pem')
        else:
            rsa = CryptoPlus.generate_rsa(1024)
            rsa.dump("key.pem", "new_public_key.pem")
        license_info = '{"status": "sub", "expireTime": 4093057076000, "ss": "", "deviceId": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"}'
        self.public_key = rsa.public_key
        self.private_key = rsa.private_key
        self.license_data = b64encode(encrypt_by_key(rsa.private_key, license_info.encode()))
        return self.license_data

    def parse(self, licenses):
        return decrypt_by_key(self.public_key, b64decode(licenses))

    def patch(self):
        # 先删除接包的内容,防止已经存在报错
        shutil.rmtree(self.crack_asar_dir, ignore_errors=True)
        # 解包
        extract_asar(str(self.asar_file), str(self.crack_asar_dir))
        shutil.copytree('crack', self.main_dir, dirs_exist_ok=True)
        # 注入
        # 看了一下mac最新版本的源代码只有一行,这里采用插入首行
        with open(self.main_dir.joinpath('main.js'), 'rb') as f:
            lines = f.readlines()
            # lines[5] = b'require("./hook")\n'
        lines.insert(0, b'require("./hook");\n')
        with open(self.main_dir.joinpath('main.js'), 'wb') as f:
            f.writelines(lines)
        # 替换密钥
        old_key = f"String.fromCharCode({','.join([str(i) for i in self.old_public_key.encode()])})".encode()
        new_key = f"String.fromCharCode({','.join([str(i) for i in self.public_key.export_key()])})".encode()
        for js_file in self.renderer_dir.rglob("*.js"):
            with open(js_file, 'rb') as f:
                byte_str = f.read()
                index = byte_str.find(old_key)
                if index != -1:
                    byte_str.replace(old_key, new_key)
                    with open(js_file, 'wb') as _f:
                        _f.write(byte_str.replace(old_key, new_key))
                    print(js_file)
                    break
        # 手动搜索发现 main.js 里面也有公钥信息,一起替换掉
        for js_file in self.main_dir.rglob("*.js"):
            with open(js_file, 'rb') as f:
                byte_str = f.read()
                index = byte_str.find(old_key)
                if index != -1:
                    byte_str.replace(old_key, new_key)
                    with open(js_file, 'wb') as _f:
                        _f.write(byte_str.replace(old_key, new_key))
                    print(js_file)
                    break
        # 占位符填充
        with open(self.main_dir.joinpath('hook.js'), 'r', encoding='u8') as f:
            content = f.read()
            content = content.replace("{{license_data}}", self.license_data.decode())
        with open(self.main_dir.joinpath('hook.js'), 'w', encoding='u8') as f:
            f.write(content)
        with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'r', encoding='u8') as f:
            content = f.read()
            content = content.replace("{{old_public_key}}", self.old_public_key.replace("\n", "\\n"))
            content = content.replace("{{new_public_key}}", self.public_key.export_key().decode().replace("\n", "\\n"))
        with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'w', encoding='u8') as f:
            f.write(content)
        # 封包
        os.remove(self.asar_file)
        pack_asar(self.crack_asar_dir, self.asar_file)
        shutil.rmtree(self.crack_asar_dir)


if __name__ == '__main__':
    XmindKeyGen().run()

常见问题

ModuleNotFoundErrore No module named “asarPy

2025 Xmind Pro (windows&macOS) 一键激活/破解脚本(1月1日更新)

解决方案

pip install asarPy
##or pip3 install asarPy

更新日志

2024.10.18 新增读者朋友反馈windows环境没有python导致脚本无法执行的问题及解决方案
2024.10.09 新增读者朋友反馈 FileExistsError 问题导致无法激活问题复现及解决方案。
2024.3.22: 修复无法激活的bug,提供了一键脚本。
注意:如果以前替换过公钥,需要还原一下app.asar再执行一键脚本,否则重新生成的公钥会不匹配;没备份app.asar的话建议重装最新版

Xmind 官方高质量思维导图集合 – Mindmap Gallery

Mindmap Gallery 是思维导图软件 Xmind 的一官方公开网站,专门分享一些热门实用高质量思维导图集合,思维导图都来自用户分享,支持免费开放下载,还可以进行搜索,各种各样的思维大图都有,非常赞。

Mindmap Gallery 网站地址:https://xuanyuan.me/lab/sites/12164.html

参考资料

Crack 脚本项目:项目 939
GitHub:https://github.com/qy527145/crack

免责申明

本文内容收集自互联网,仅供学习交流,如果不慎侵权请联系(#换@) javaercn#gmail.com 删除。

请勿传播盗版软件。

正文完
加入轩源的网络日志微信群参与讨论
post-qrcode
 0
轩源
版权声明:本站原创文章,由 轩源 于2024-08-23发表,共计8737字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
支持作者

☝️用微信请我喝杯咖啡☕️

😛如果文章对您有用,请支持作者😛

支持作者

☝️用支付宝请我喝杯奶茶🧋

专业团队承接各类定制化软件系统

  • 源码跳动,年轻无畏,代码筑梦!
  • 专注定制化软件,领航海外 APP 开发,精雕出海网站,巧制小程序,匠心打造定制化系统。
  • 以创新为翼,用专业护航。
  • 突破国界限制,为全球客户定制专属数字世界,开启无限可能的科技新篇!
微信二维码

👆合作咨询和老板谈👆

评论(24 条评论)
HH 评论达人 LV.1
2024-10-21 16:55:57 回复

好像失效了

 Windows  Edge  新加坡
安定坊 评论达人 LV.1
2024-10-22 14:55:46 回复

登录账号能用。给个建议:安装路径可以提供自己输入的位置,考虑下改位置的人。加个判断,不改就默认。

 Windows  Edge  中国浙江省杭州市联通
    轩源 博主
    2024-10-22 20:12:50 回复

    谢谢反馈🙏

     Macintosh  Chrome
xiaoc 评论达人 LV.1
2024-10-24 09:15:11 回复

20241024版本登录也激活无效

 Windows  Chrome  美国纽约纽约科进
xiaoc 评论达人 LV.1
2024-10-24 09:20:23 回复

切换相同版本也无效

 Windows  Chrome  美国纽约纽约科进
    轩源 博主
    2024-10-24 09:56:53 回复

    具体报错或截图信息发我看下。

     Windows  Chrome
安定坊 评论达人 LV.1
2024-10-24 10:35:55 回复

官网最新的是24.10.01101吧,我这能用啊。

 Windows  Edge  中国浙江省杭州市联通
Jacky Tang 评论达人 LV.1
2024-10-26 21:29:12 回复

MacOS下似乎已经失效了。

24.10.01101 版本,MacOS 15.0.1 (24A348)下正常运行破解脚本,提示都正常,但是打开后没有起效。

 Macintosh  Chrome  中国上海上海市电信
    轩源 博主
    2024-10-27 10:22:05 回复

    登录账号了吗?

     Macintosh  Chrome
      Jacky Tang 评论达人 LV.1
      2024-10-28 23:31:36 回复

      登录了。

      刚刚尝试了24.04.05171,发现可以破解,没有问题。

       Macintosh  Chrome  中国上海上海市电信
        轩源 博主
        2024-10-29 10:26:09 回复

        好嘞。

         Windows  Chrome
Timothy 评论达人 LV.1
2024-11-05 09:21:43 回复

MacOS报错:

darwin,arm64,24.1.0:
————————————————–
Error: listen EPERM: operation not permitted 127.0.0.1:3000
at Server.setupListenHandle [as _listen2] (node:net:1415:21)
at listenInCluster (node:net:1480:12)
at doListen (node:net:1629:7)
at process.processTicksAndRejections (node:internal/process/task_queues:84:21)

 Macintosh  Chrome  日本东京都东京
coder 评论达人 LV.1
2024-11-07 17:20:24 回复

可以出一起linux版本的马

 Linux  Chrome  拉脱维亚Riga
coder 评论达人 LV.1
2024-11-07 17:23:42 回复

可以出一期linux版本的吗
我在Fedora里面运行了MAc版本的激活文件,总是出问题
卡在ModuleNotFoundError: No module named ‘crypto_plus’

 Linux  Chrome  拉脱维亚Riga
    轩源 博主
    2024-11-07 17:31:39 回复

    谢谢反馈,最近比较忙,空了我找个linux环境试试。

     Windows  Chrome
      coder 评论达人 LV.1
      2024-11-07 18:08:36 回复

      好的,感谢大佬

       Linux  Chrome  美国加利福尼亚旧金山
OW 评论达人 LV.1
2025-01-06 14:10:42 回复

mac os version :24.12.04124 执行完脚本,没有用,仍然 没有pro

 Macintosh  Edge  美国加利福尼亚旧金山
    轩源 博主
    2025-01-06 18:39:44 回复

    具体什么报错,可以贴出来看下~

    或者扫文末二维码,进群聊下哈~

     Windows  Chrome
      owen.jiao 评论达人 LV.1
      2025-01-10 20:36:02 回复

      没有报错,脚本运行成功,但是登陆后还是没有变成pro版,MAC, 25.01.01061

       Macintosh  Edge  美国加利福尼亚旧金山