懒人版:navicat12

个人认为这是目前最好用的破解版,无毒,安装方便,墙裂推荐

链接: https://pan.baidu.com/s/1zpgilDUi6ct3XwrKrMkdCQ?pwd=6dpj

提取码: 6dpj 

直接安装,替换破解文件即可,即开即用

 

 

 

折腾版:navicat16破解

 其实网上破解教程一大把,但是下载下来大多报有病毒

我还是想找到破解源头的,可以避免被二次封装加入病毒的风险

功夫不负有心人,终于被我找到了

源头在这:https://github.com/TripalinkAdmin/navicat-keygen

可惜没有编译后的包了,有兴趣的可以自己尝试编译

下面是编译教程

转自:https://github.com/TripalinkAdmin/navicat-keygen/blob/windows/doc/how-to-build.zh-CN.md

Navicat Keygen - 如何编译?

1. 前提条件

  1. 请确保你有 Visual Studio 2019 或者更高版本。因为这是一个VS2019项目。

  2. 请确保你安装了 vcpkg 以及下面几个库:

    • capstone[x86]:x64-windows-static
    • capstone[x86]:x86-windows-static
    • keystone:x64-windows-static
    • keystone:x86-windows-static
    • openssl-windows:x64-windows-static
    • openssl-windows:x86-windows-static
    • rapidjson:x64-windows-static
    • rapidjson:x86-windows-static

    你可以通过下面的命令来安装它们:

    $ vcpkg install capstone[x86]:x64-windows-static
    $ vcpkg install capstone[x86]:x86-windows-static
    $ vcpkg install keystone:x64-windows-static
    $ vcpkg install keystone:x86-windows-static
    $ vcpkg install openssl-windows:x64-windows-static
    $ vcpkg install openssl-windows:x86-windows-static
    $ vcpkg install rapidjson:x64-windows-static
    $ vcpkg install rapidjson:x86-windows-static
  3. 你的 vcpkg 已经和你的 Visual Studio 集成了,即你曾成功运行了:

    $ vcpkg integrate install

2. 编译

  1. 在 Visual Studio 打开这个项目。

  2. 选择 Release 配置。

  3. 选择 Win32 来生成供32位Navicat使用的keygen/patcher。

    或者选择 x64 来生成供64位Navicat使用的keygen/patcher。

  4. 选择 生成 > 生成解决方案。

生成完成后,你会在 bin/ 文件夹下看到编译后的keygen/patcher。

 

不想编译的,可以直接下载破解工具

链接: https://pan.baidu.com/s/13UAlWZTed-ayNgb_cK9dNw?pwd=hc9j

提取码: hc9j

 

注意:在win10系统成功破解,在windows2022无法使用,脚本执行到一半自动终止,看不到日志,个人猜测是系统本身的安全策略造成的 

 

下面是破解教程

转自:https://github.com/TripalinkAdmin/navicat-keygen/blob/windows/doc/how-to-use.windows.zh-CN.md

Navicat Keygen - 如何使用这个注册机? (Windows)

  1. 从这里下载最新的release。

  2. 使用navicat-patcher.exe替换掉navicat.exelibcc.dll里的Navicat激活公钥。

    navicat-patcher.exe [-dry-run] <Navicat Installation Path> [RSA-2048 PEM File Path]
    
    • [-dry-run]: 运行patcher但不对Navicat程序做任何修改。

      这个参数是可选的。

    • <Navicat Installation Path>: Navicat的完整安装路径。

      这个参数必须指定。

    • [RSA-2048 PEM File Path]: RSA-2048私钥文件的完整路径或相对路径。

      这个参数是可选的。 如果未指定,navicat-patcher.exe将会在当前目录生成一个新的RSA-2048私钥文件。

    例如:(在cmd.exe中)

    navicat-patcher.exe "C:\Program Files\PremiumSoft\Navicat Premium 12"
    

    Navicat Premium 12.1.22 简体中文版已通过测试。下面将是一份样例输出:

    ***************************************************
    *       Navicat Patcher by @DoubleLabyrinth       *
    *                  Version: 4.0                   *
    ***************************************************
    
    Press Enter to continue or Ctrl + C to abort.
    
    [+] Try to open Navicat.exe ... Ok!
    [+] Try to open libcc.dll ... Ok!
    
    [+] PatchSolution0 ...... Ready to apply
        [*] Patch offset = +0x029bccd8
    [+] PatchSolution1 ...... Ready to apply
        [*] [0] Patch offset = +0x02206c00
        [*] [1] Patch offset = +0x0074c489
        [*] [2] Patch offset = +0x02206910
        [*] [3] Patch offset = +0x0074c46f
        [*] [4] Patch offset = +0x02206904
    [-] PatchSolution2 ...... Omitted
    [+] PatchSolution3 ...... Ready to apply
        [*] [  0] Instruction RVA = 0x016539c8, Patch Offset = +0x023e64d4
        [*] [  1] Instruction RVA = 0x01653a1f, Patch Offset = +0x01652e23
        [*] [  2] Instruction RVA = 0x01653a25, Patch Offset = +0x01652e28
        [*] [  3] Instruction RVA = 0x01653a8c, Patch Offset = +0x01652e8e
        ...
        ...
        ...
        [*] [108] Instruction RVA = 0x016604e1, Patch Offset = +0x023e66d8
        [*] [109] Instruction RVA = 0x01660518, Patch Offset = +0x0165f91c
        [*] [110] Instruction RVA = 0x0166051e, Patch Offset = +0x0165f921
    
    [*] PatchSolution0 is suppressed in order to keep digital signature valid.
    
    [*] Generating new RSA private key, it may take a long time...
    [*] Your RSA public key:
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hV66HgU4LrKXWW6O7bK
    AN6ZTr5W+Mq8ClTQ+Pc+BdhLu6rww55kVq7OXKGpvx0G4eTafYMGrrBETgDSTaMq
    Bx+8bZbGBWh2LtNfqU+xUrpHHBSz0ByBc3iTEzzthJl+Fzf8suDX2lWYIc/Ym/eW
    YtxdJ7xOzLb68z4N0zVmA0jFX2FOm75DRYgKqy4SGixapfucL9dVaWVLTUdbrVdj
    4LX78t4t5ykbYoThrat4yuLvj/BxLaQ6ivKD+ScfHdtCoY+NA5jmBoUfBq3Q1SXB
    iNaoXctbi0/H3MiPu0cRojryAocooF89yFm5/mNnzWGAYPr6DvBI8CDTZmjaQ4oC
    aQIDAQAB
    -----END PUBLIC KEY-----
    
    *******************************************************
    *                   PatchSolution1                    *
    *******************************************************
    [*] Previous:
    +0x0000000002206c00  44 37 35 31 32 35 42 37 30 37 36 37 42 39 34 31  D75125B70767B941
    +0x0000000002206c10  34 35 42 34 37 43 31 43 42 33 43 30 37 35 35 45  45B47C1CB3C0755E
    +0x0000000002206c20  37 43 43 42 38 38 32 35 43 35 44 43 45 30 43 35  7CCB8825C5DCE0C5
    ...
    ...
    [*] After:
    +0x0000000002206c00  33 43 32 39 30 39 35 38 33 34 38 41 42 43 35 39  3C290958348ABC59
    +0x0000000002206c10  36 44 39 30 43 45 45 38 31 36 42 36 39 38 34 44  6D90CEE816B6984D
    +0x0000000002206c20  35 32 35 34 37 45 30 32 34 31 42 36 42 43 31 41  52547E0241B6BC1A
    ...
    ...
    
    [*] Previous:
    +0x000000000074c480                             fe ea bc 01                    ....
    [*] After:
    +0x000000000074c480                             08 00 00 00                    ....
    
    [*] Previous:
    +0x0000000002206910  45 31 43 45 44 30 39 42 39 43 32 31 38 36 42 46  E1CED09B9C2186BF
    +0x0000000002206920  37 31 41 37 30 43 30 46 45 32 46 31 45 30 41 45  71A70C0FE2F1E0AE
    +0x0000000002206930  46 33 42 44 36 42 37 35 32 37 37 41 41 42 32 30  F3BD6B75277AAB20
    ...
    ...
    [*] After:
    +0x0000000002206910  41 33 39 42 41 36 43 34 31 36 33 32 35 30 46 45  A39BA6C4163250FE
    +0x0000000002206920  42 32 41 39 31 41 34 32 46 44 42 46 30 41 32 31  B2A91A42FDBF0A21
    +0x0000000002206930  33 34 46 34 36 44 43 45 34 30 42 46 41 42 33 35  34F46DCE40BFAB35
    ...
    ...
    
    [*] Previous:
    +0x000000000074c460                                               59                 Y
    +0x000000000074c470  08 01 00                                         ...
    [*] After:
    +0x000000000074c460                                               06                 .
    +0x000000000074c470  00 00 00                                         ...
    
    [*] Previous:
    +0x0000000002206900              39 32 39 33 33                           92933
    [*] After:
    +0x0000000002206900              42 34 34 33 38                           B4438
    
    *******************************************************
    *                   PatchSolution3                    *
    *******************************************************
    [*] +023e64d4: 4d 49 49 ---> 4d 49 49
    [*] +01652e23: 42 49 ---> 42 49
    [*] +01652e28: 6a ---> 6a
    ...
    ...
    ...
    [*] +023e66d8: 77 49 44 41 ---> 51 49 44 41
    [*] +0165f91c: 51 41 ---> 51 41
    [*] +0165f921: 42 ---> 42
    
    [*] New RSA-2048 private key has been saved to
    C:\Users\DoubleSine\github.com\navicat-keygen\bin\x64-Release\RegPrivateKey.pem
    
    *******************************************************
    *           PATCH HAS BEEN DONE SUCCESSFULLY!         *
    *                  HAVE FUN AND ENJOY~                *
    *******************************************************
    
  3. 接下来使用navicat-keygen.exe来生成序列号和激活码

    navicat-keygen.exe <-bin|-text> [-adv] <RSA-2048 PrivateKey(PEM file)>
    
    • <-bin|-text>: 必须是-bin-text

      如果指定了-binnavicat-keygen.exe最终将生成license_file文件。这个选项是给Navicat旧激活方式使用的。

      如果指定了-textnavicat-keygen.exe最终将生成Base64样式的激活码。这个选项是给Navicat新激活方式使用的。

      这个参数必须指定。

    • [-adv]: 开启高级模式。

      这个参数是可选的。 如果指定了这个参数,navicat-keygen.exe将会要求你手工填写产品ID号、语言标识号。这个选项一般是给以后用的。

    • <RSA-2048 PrivateKey(PEM file)>: RSA-2048私钥文件的完整路径或相对路径。

      这个参数必须指定。

    例如:(在cmd.exe中)

    navicat-keygen.exe -text .\RegPrivateKey.pem

    你会被要求选择Navicat产品类别、语言以及输入主版本号。之后会随机生成一个序列号。

    Select Navicat product:
    0. DataModeler
    1. Premium
    2. MySQL
    3. PostgreSQL
    4. Oracle
    5. SQLServer
    6. SQLite
    7. MariaDB
    8. MongoDB
    9. ReportViewer
    
    (Input index)> 1
    
    Select product language:
    0. English
    1. Simplified Chinese
    2. Traditional Chinese
    3. Japanese
    4. Polish
    5. Spanish
    6. French
    7. German
    8. Korean
    9. Russian
    10. Portuguese
    
    (Input index)> 1
    
    (Input major version number, range: 0 ~ 15, default: 12)> 12
    
    Serial number:
    NAVO-2ORP-IN5A-GQEE
    
    Your name: 
    

    你可以使用这个序列号暂时激活Navicat。

    接下来你会被要求输入用户名组织名;请随便填写,但不要太长。

    Your name: DoubleLabyrinth
    Your organization: DoubleLabyrinth
    Input request code (in Base64), input empty line to end:
    

    之后你会被要求填入请求码。注意 不要关闭命令行.

  4. 断开网络 并打开Navicat。找到注册窗口,并填入keygen给你的序列号。然后点击激活按钮。

  5. 一般来说在线激活肯定会失败,这时候Navicat会询问你是否手动激活,直接选吧。

  6. 手动激活窗口你会得到一个请求码,复制它并把它粘贴到keygen里。最后别忘了连按至少两下回车结束输入。

    Your name: DoubleLabyrinth
    Your organization: DoubleLabyrinth
    
    Input request code (in Base64), input empty line to end:
    t2U+0yfE2FfnbjyhCXa0lglZOHu9Ntc3qyGiPbR6xb1QoU63/9BVfdaCq0blwVycXPyT/Vqw5joIKdM5oCRR/afCPM7iRcyhQMAnvqwc+AOKCqayVV+SqKLvtR/AbREI12w++PQ6Ewfs4A8PgB8OJ9G0jKt6Q/iJRblqi2WWw9mwy+YHcYYh3UAfygTnyj/xl+MzRymbY0lkus+6LPtpDecVsFFhM7F32Ee1QPwISko7bAkHOtkt+joPfYDdn9PDGZ4HEmeLvH6UqZCXkzgaAfynB7cQZFEkId8FsW2NGkbpM7wB2Hi3fNFgOIjutTprixTdbpFKn4w6gGc28ve23A==
    
    Request Info:
    {"K":"NAVO2ORPIN5AGQEE", "DI":"R91j6WyMhxHznAKSxxxx", "P":"WIN"}
    
    Response Info:
    {"K":"NAVO2ORPIN5AGQEE","DI":"R91j6WyMhxHznAKSxxxx","N":"DoubleLabyrinth","O":"DoubleLabyrinth","T":1547826060}
    
    License:
    lRF18o+ZhBphyN0U5kFLHtAAGGXuvhqOcxNuvAk4dJcGeR0ISuw74mQvAfdNjv0T
    I5NZFzqIJvrzM0XeR88q+3kmZkECuxwwWHP3zzDPhPiylcTV4DoGZ1tfoViUSYQc
    LgXG0Fl7koZeP61YOKQ8GfX+Xk2ZTM64bYaF7NlhonM+GQUJCCF2JThmrP921t2p
    b/E5pV6fLOYMM13881ZQcQcltMNVDZn4lzgzKRFFxCQFaTl6fJMHZdYVmICQTHtI
    sNaym0zduc8/cv34mgJ+7NseXmsEPCdjrZ59wgfPsLhZLXqtfxi5hGWw4NMa3Sb2
    UI8dzqFzRp/hSDEM0mEqiA==
    
  7. 如果不出意外,你会得到一个看似用Base64编码的激活码。直接复制它,并把它粘贴到Navicat的手动激活窗口,最后点激活按钮。如果没什么意外的话应该能成功激活。

 

经过实操,确实可以破解最新版!

下面是破解原理,感兴趣的童鞋可以看看

转自:https://github.com/TripalinkAdmin/navicat-keygen/blob/windows/doc/how-does-it-work.zh-CN.md

Navicat Keygen - 注册机是怎么工作的?

1. 关键词解释.

  • Navicat激活公钥

    这是一个2048位的RSA公钥,Navicat使用这个公钥来完成相关激活信息的加密和解密。

    这个公钥被作为 RCData 类型的资源储存在 navicat.exe 当中。资源名为"ACTIVATIONPUBKEY"。你可以使用一个叫Resource Hacker的软件来查看它。这个公钥的具体内容为:

    -----BEGIN PUBLIC KEY-----  
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1dqF3SkCaAAmMzs889I  
    qdW9M2dIdh3jG9yPcmLnmJiGpBF4E9VHSMGe8oPAy2kJDmdNt4BcEygvssEfginv  
    a5t5jm352UAoDosUJkTXGQhpAWMF4fBmBpO3EedG62rOsqMBgmSdAyxCSPBRJIOF  
    R0QgZFbRnU0frj34fiVmgYiLuZSAmIbs8ZxiHPdp1oD4tUpvsFci4QJtYNjNnGU2  
    WPH6rvChGl1IRKrxMtqLielsvajUjyrgOC6NmymYMvZNER3htFEtL1eQbCyTfDmt  
    YyQ1Wt4Ot12lxf0wVIR5mcGN7XCXJRHOFHSf1gzXWabRSvmt1nrl7sW6cjxljuuQ  
    awIDAQAB  
    -----END PUBLIC KEY-----  
    

    如果您有相应的私钥并乐意公开的话欢迎联系我,我将非常感谢您的慷慨。

    注意:

    从 Navicat Premium 12.0.25 开始,Navicat不再从navicat.exe的资源中加载私钥。事实上,公钥转为从libcc.dll中加载,并且已经被加密。与此同时,为了防止被轻松地替换,加密的公钥被分到5个地方储存:

    以下内容是从 Navicat Premium x64 12.0.25 简体中文版 的libcc.dll中发现的,libcc.dll的SHA256值为607e0a84c75966b00f3d12fa833e91d159e4f51ac51b6ba66f98d0c3cbefdce0。我不保证在Navicat的其他版本中相关偏移量和下述的相同,但相关的 字符串 以及 立即数 是很可能找得到的。

    1. libcc.dll中,文件偏移量+0x01A12090的地方,储存了加密公钥的第一部分,以 字符串 的形式储存:

      "D75125B70767B94145B47C1CB3C0755E  
       7CCB8825C5DCE0C58ACF944E08280140  
       9A02472FAFFD1CD77864BB821AE36766  
       FEEDE6A24F12662954168BFA314BD950  
       32B9D82445355ED7BC0B880887D650F5" 
      
    2. libcc.dll中,文件偏移量+0x0059D799的地方,储存了加密公钥的第二部分,以 立即数 的形式储存在一条指令中:

      0xFE 0xEA 0xBC 0x01
      

      相应的十进制值为: 29158142

    3. libcc.dll中,文件偏移量+0x01A11DA0的地方,储存了加密公钥的第三部分,以 字符串 的形式储存:

      "E1CED09B9C2186BF71A70C0FE2F1E0AE  
       F3BD6B75277AAB20DFAF3D110F75912B  
       FB63AC50EC4C48689D1502715243A79F  
       39FF2DE2BF15CE438FF885745ED54573  
       850E8A9F40EE2FF505EB7476F95ADB78  
       3B28CA374FAC4632892AB82FB3BF4715  
       FCFE6E82D03731FC3762B6AAC3DF1C3B  
       C646FE9CD3C62663A97EE72DB932A301  
       312B4A7633100C8CC357262C39A2B3A6  
       4B224F5276D5EDBDF0804DC3AC4B8351  
       62BB1969EAEBADC43D2511D6E0239287  
       81B167A48273B953378D3D2080CC0677  
       7E8A2364F0234B81064C5C739A8DA28D  
       C5889072BF37685CBC94C2D31D0179AD  
       86D8E3AA8090D4F0B281BE37E0143746  
       E6049CCC06899401264FA471C016A96C  
       79815B55BBC26B43052609D9D175FBCD  
       E455392F10E51EC162F51CF732E6BB39  
       1F56BBFD8D957DF3D4C55B71CEFD54B1  
       9C16D458757373E698D7E693A8FC3981  
       5A8BF03BA05EA8C8778D38F9873D62B4  
       460F41ACF997C30E7C3AF025FA171B5F  
       5AD4D6B15E95C27F6B35AD61875E5505  
       449B4E"
      
    4. libcc.dll中,文件偏移量+0x0059D77F的地方,储存了加密公钥的第四部分,以 立即数 的形式储存在一条指令中:

      0x59 0x08 0x01 0x00
      

      相应的十进制值为: 67673

    5. libcc.dll中,文件偏移量+0x01A11D8C的地方,储存了加密公钥的第五部分,以 字符串 的形式储存:

      "92933"
      

    这五部分按照"%s%d%s%d%s"的形式输出则为加密的公钥,顺序和上述的顺序相同,具体的输出为:

    
    D75125B70767B94145B47C1CB3C0755E7CCB8825C5DCE0C58ACF944E082801409A02472FAFFD1CD77864BB821AE36766FEEDE6A24F12662954168BFA314BD95032B9D82445355ED7BC0B880887D650F529158142E1CED09B9C2186BF71A70C0FE2F1E0AEF3BD6B75277AAB20DFAF3D110F75912BFB63AC50EC4C48689D1502715243A79F39FF2DE2BF15CE438FF885745ED54573850E8A9F40EE2FF505EB7476F95ADB783B28CA374FAC4632892AB82FB3BF4715FCFE6E82D03731FC3762B6AAC3DF1C3BC646FE9CD3C62663A97EE72DB932A301312B4A7633100C8CC357262C39A2B3A64B224F5276D5EDBDF0804DC3AC4B835162BB1969EAEBADC43D2511D6E023928781B167A48273B953378D3D2080CC06777E8A2364F0234B81064C5C739A8DA28DC5889072BF37685CBC94C2D31D0179AD86D8E3AA8090D4F0B281BE37E0143746E6049CCC06899401264FA471C016A96C79815B55BBC26B43052609D9D175FBCDE455392F10E51EC162F51CF732E6BB391F56BBFD8D957DF3D4C55B71CEFD54B19C16D458757373E698D7E693A8FC39815A8BF03BA05EA8C8778D38F9873D62B4460F41ACF997C30E7C3AF025FA171B5F5AD4D6B15E95C27F6B35AD61875E5505449B4E6767392933
    
    

    这个加密的公钥可以用我的另外一个repo(how-does-navicat-encrypt-password)解密,其中密钥为b'23970790'

    例如:

    E:\GitHub>git clone https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password.git
    ...
    E:\GitHub>cd how-does-navicat-encrypt-password\python3
    E:\GitHub\how-does-navicat-encrypt-password\python3>python
    Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from NavicatCrypto import *
    >>> cipher = Navicat11Crypto(b'23970790')
    >>> print(cipher.DecryptString('D75125B70767B94145B47C1CB3C0755E7CCB8825C5DCE0C58ACF944E082801409A02472FAFFD1CD77864BB821AE36766FEEDE6A24F12662954168BFA314BD95032B9D82445355ED7BC0B880887D650F529158142E1CED09B9C2186BF71A70C0FE2F1E0AEF3BD6B75277AAB20DFAF3D110F75912BFB63AC50EC4C48689D1502715243A79F39FF2DE2BF15CE438FF885745ED54573850E8A9F40EE2FF505EB7476F95ADB783B28CA374FAC4632892AB82FB3BF4715FCFE6E82D03731FC3762B6AAC3DF1C3BC646FE9CD3C62663A97EE72DB932A301312B4A7633100C8CC357262C39A2B3A64B224F5276D5EDBDF0804DC3AC4B835162BB1969EAEBADC43D2511D6E023928781B167A48273B953378D3D2080CC06777E8A2364F0234B81064C5C739A8DA28DC5889072BF37685CBC94C2D31D0179AD86D8E3AA8090D4F0B281BE37E0143746E6049CCC06899401264FA471C016A96C79815B55BBC26B43052609D9D175FBCDE455392F10E51EC162F51CF732E6BB391F56BBFD8D957DF3D4C55B71CEFD54B19C16D458757373E698D7E693A8FC39815A8BF03BA05EA8C8778D38F9873D62B4460F41ACF997C30E7C3AF025FA171B5F5AD4D6B15E95C27F6B35AD61875E5505449B4E6767392933'))
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1dqF3SkCaAAmMzs889I
    qdW9M2dIdh3jG9yPcmLnmJiGpBF4E9VHSMGe8oPAy2kJDmdNt4BcEygvssEfginv
    a5t5jm352UAoDosUJkTXGQhpAWMF4fBmBpO3EedG62rOsqMBgmSdAyxCSPBRJIOF
    R0QgZFbRnU0frj34fiVmgYiLuZSAmIbs8ZxiHPdp1oD4tUpvsFci4QJtYNjNnGU2
    WPH6rvChGl1IRKrxMtqLielsvajUjyrgOC6NmymYMvZNER3htFEtL1eQbCyTfDmt
    YyQ1Wt4Ot12lxf0wVIR5mcGN7XCXJRHOFHSf1gzXWabRSvmt1nrl7sW6cjxljuuQ
    awIDAQAB
    -----END PUBLIC KEY-----

    注意:

    从 Navicat Premium 12.1.11 开始,Navicat不再用上面说的方法加载密钥。当然密钥还是储存在libcc.dll文件中。当Navicat启动时,它会用8字节长的XOR密钥来加密公钥,并储存到一个静态数据区中。当验证 激活码 时,Navicat会重新生成一样的8字节XOR密钥,并解密在静态储存区中的密文,从而获取公钥。

    libcc.dll,x64版本中,你会看到如下的几条指令:

    xor eax, 'M'
    mov byte_xxxxxx, al
    ...
    xor eax, 'I'
    mov byte_xxxxxx, al
    ...
    xor eax, 'I'
    mov byte_xxxxxx, al
    ...
    xor eax, 'B'
    mov byte_xxxxxx, al
    ...
    xor eax, 'I'
    mov byte_xxxxxx, al
    ...
    xor eax, 'j'
    mov byte_xxxxxx, al
    ...
    ...
  • 请求码

    这是一个Base64编码的字符串,代表的是长度为256字节的数据。这256字节的数据是 离线激活信息 用 Navicat激活公钥 加密的密文。

  • 离线激活请求信息

    这是一个JSON风格的字符串。它包含了3个Key:"K""DI""P",分别代表 序列号、设备识别码(与你的电脑硬件信息相关)和 平台 (其实就是操作系统类型)。

    例如:

    {"K": "xxxxxxxxxxxxxxxx", "DI": "yyyyyyyyyyyyy", "P": "WIN8"}
    
  • 激活码

    这是一个Base64编码的字符串,代表的是长度为256字节的数据。这256字节的数据是 离线激活回复信息 用 Navicat激活私钥 加密的密文。目前我们不知道官方的 Navicat激活私钥,所以我们得替换掉软件里的公钥。

  • 离线激活回复信息

    和 离线激活请求信息 一样,它也是一个JSON风格的字符串。但是它包含5个Key,分别为"K""N""O""T" 和 "DI".

    "K" 和 "DI" 的意义与 离线激活请求信息 中的相同,且Value必须与 离线激活请求信息 中的相同。

    "N""O""T" 分别代表 注册名、组织、授权时间。

    注册名 和 组织 的值类型为UTF-8编码的字符串。授权时间 的值类型可以为字符串或整数(感谢@Wizr在issue #10中的报告)。

    "T" 可以被省略。

  • 序列号

    这是一个被分为了4个部分的字符串,其中每个部分都是4个字符长。

    序列号 是通过10个字节的数据来生成的。为了表达方便,我用 uint8_t data[10] 来表示这10个字节。

    1. data[0] 和 data[1] 必须分别为 0x68 和 0x2A

      这两个字节为Navicat的标志数。

    2. data[2]、data[3] 和 data[4] 可以是任意字节,你想设成什么都行。

    3. data[5] 和 data[6] 是Navicat的语言标志,值如下:

      语言类型data[5]data[6]发现者
      English 0xAC 0x88  
      简体中文 0xCE 0x32  
      繁體中文 0xAA 0x99  
      日本語 0xAD 0x82 @dragonflylee
      Polski 0xBB 0x55 @dragonflylee
      Español 0xAE 0x10 @dragonflylee
      Français 0xFA 0x20 @Deltafox79
      Deutsch 0xB1 0x60 @dragonflylee
      한국어 0xB5 0x60 @dragonflylee
      Русский 0xEE 0x16 @dragonflylee
      Português 0xCD 0x49 @dragonflylee
    4. data[7] 是Navicat产品ID。(感谢 @dragonflylee 和 @Deltafox79提供的数据)

      产品名EnterpriseStandardEducationalEssentials
      Navicat Report Viewer 0x0B      
      Navicat Data Modeler 3   0x84 0x85  
      Navicat Premium 0x65   0x66 0x67
      Navicat MySQL 0x68 0x69 0x6A 0x6B
      Navicat PostgreSQL 0x6C 0x6D 0x6E 0x6F
      Navicat Oracle 0x70 0x71 0x72 0x73
      Navicat SQL Server 0x74 0x75 0x76 0x77
      Navicat SQLite 0x78 0x79 0x7A 0x7B
      Navicat MariaDB 0x7C 0x7D 0x7E 0x7F
      Navicat MongoDB 0x80 0x81 0x82  
    5. data[8] 的高4位代表 版本号。低4位未知,但可以用来延长激活期限,可取的值有00000001

      例如:

      对于 Navicat 12: 高4位必须是1100,为12的二进制形式。
      对于 Navicat 11: 高4位必须是1011,为11的二进制形式。

    6. data[9] 目前暂未知,但如果你想要 not-for-resale license 的话可以设成0xFD0xFC0xFB

      根据 Navicat 12 for Mac x64 版本残留的符号信息可知:

      • 0xFB是 Not-For-Resale-30-days license.
      • 0xFC是 Not-For-Resale-90-days license.
      • 0xFD是 Not-For-Resale-365-days license.
      • 0xFE是 Not-For-Resale license.
      • 0xFF是 Site license.

    之后Navicat使用 ECB 模式的 DES 算法来加密 data[10] 的后8字节,也就是 data[2] 到 data[9] 的部分。

    相应的DES密钥为:

    unsigned char DESKey = { 0x64, 0xAD, 0xF3, 0x2F, 0xAE, 0xF2, 0x1A, 0x27 };

    之后使用Base32编码 data[10],其中编码表改为:

    char EncodeTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";

    编码之后你应该会得到一个16字节长的字符串,并且以"NAV"打头。

    将16字节的字符串分成4个4字节的小块,然后用"-"连接就可以得到 序列号。

2. 激活过程

  1. 检查用户输入的 序列号 是否合法。

  2. 在用户点击了激活按钮之后,Navicat会先尝试在线激活。如果失败,用户可以选择离线激活。

  3. Navicat会使用用户输入的 序列号 以及从用户电脑收集来的信息生成 离线激活请求信息,然后用 Navicat激活公钥 加密,并将密文用Base64编码,最后得到 请求码。

  4. 正常流程下,请求码 应该通过可联网的电脑发送给Navicat的官方激活服务器。之后Navicat的官方激活服务器会返回一个合法的 激活码。

    但现在我们使用注册机来扮演官方激活服务器的角色,只是Navicat软件里的激活公钥得换成自己的公钥:

    1. 根据 请求码, 获得"DI"值和"K"值。

    2. "K"值、用户名、组织名和"DI"值填写 离线激活回复信息。

    3. 用自己的2048位RSA私钥加密 离线激活回复信息,你将会得到256字节的密文。

    4. 用Base64编码这256字节的密文,就可以得到 激活码。

    5. 在Navicat软件中填入 激活码 即可完成离线激活。

 

 

 

参考文档:

http://new.qqworker.com/?id=967

https://www.wxy97.com/archives/10/

posted on 2023-06-06 19:33  06  阅读(237)  评论(0编辑  收藏  举报