为了在自己电脑上使用公司的测试软件,方便在家学习,记录一下软件破解的流程。

1. 准备阶段

存在的问题:

1.公司测试软件存在授权问题,不在特定电脑无法使用,复制到自己的电脑上无法使用。

解决方案:

  1. 开始试图通过文件夹目录查找相关授权信息,找到了BouncyCastle.Crypto.dll1_Au.lic1_public.key,认为这些是与授权相关的文件。并且通过打开软件提示的信息程序未授权或授权文件损坏,请与供应商联系,并提供以下信息!注册码:73EAD98,Error Code:0x0001,开始从注册表下手,试着能不能找到注册表中有关软件的相关信息。

  2. 由于不知道软件访问那些注册表信息,通过deepseek查询到可以通过Process Monitor来查询对应软件的进程执行操作的信息,由于这个工具是ms级的监控,所以信息非常大,没有针对性,通过学习使用Filter功能了解到了可以缩小范围查询。但是由于没有处理PM返回信息的能力,所以就没有找到有用信息。但是学习了软件的使用,可以为后续需要打下基础。

  3. 由于没有找到授权文件,所以只能通过其他途径来破解软件。

  4. 通过Gemini上传整个文件夹的截图,让Gemini给我分析那些可能与软件授权有关的文件。其中Gemini指出了LM.dll文件可能与软件授权有关(给出解释如下:可能是指 License Management (授权管理) 或 LogMeIn 相关的库,但更可能是本地授权管理或与旧版授权软件(如 FlexNet Publisher,以前的 LM 相关的工具)的简化封装。)这个信息很关键,为后续的破解提供了思路。

  5. 因为通过dll文件无法确定内部逻辑,所以我转换了思路,通过IL语言查看工具想查看dll文件的源码。开始我使用之前了解到的ILSpy工具,但是由于ILSpy工具的功能有限,导致无法快速定位到需要的源码。后来我问了deepseek,他给我推荐了一些工具,具体如下:

    • dnSpy:免费的.NET反编译工具,可以反编译dll文件,可以查看源码,还可以直接调试运行。并且给出了下载地址:dnSpy下载

    • dotPeek (JetBrains) 支持生成PDB文件、反混淆效果较好。下载地址:dotPeek下载

  6. 最终用了dnSpy,打开LM.dll文件,可以看到里面有许多与授权相关的类,包括:

    • LM.Licensing.LicenseManager:授权管理类,可以查看源码。
    • 可以直接调试运行代码,f5运行,可以看到授权管理类的具体操作。
  7. 由于LM.dll文件中有许多与授权相关的类,所以我开始逐个分析这些类,看看能不能找到与授权相关的函数。

  8. 分析了LM.dll文件,发现其中有许多与授权相关的函数,包括:

    • LM.Licensing.LicenseManager.GetLicenseErrorMessage
    • LM.Licensing.LicenseManager.VerifyLicense
    • LM.Licensing.LicenseManager.Verifiy
  9. 最终搞清楚了整个授权流程,包括:授权文件的逻辑、授权文件的生成、授权文件的验证和最终异常的处理。

  10. 由于我根据步骤将它需要的授权文件放到了对应的目录,然而最终还是提示了错误,只是错误内容不一样。

  11. 偶然发现dnSpy还可以直接修改文件,那么我就将最终抛出异常的代码注释掉了,保存后可以直接生效。

  12. 最后,成功破解了软件,可以正常打开了。

  13. 但是打开里面二级页面后提示了错误,dnSpy提示了:”未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。”

  14. 由于我不知道这个错误的原因,所以我又问了deepseek,他给我提供了另一种解决方案,即:下载安装Access数据库引擎:AccessDB,其中还了解到了公司的软件是32位的,所以下载32位的版本。

2. 总结

通过以上步骤,成功破解了公司的测试软件,但是由于没有研究授权的逻辑,只是粗暴的注释掉了异常,所以可能还会出现其他问题。 最后,总结一下软件破解的流程:

  1. 准备阶段:

    • 找出授权文件,包括BouncyCastle.Crypto.dll、1_Au.lic、1_public.key、LM.dll等。
    • 分析授权文件逻辑,找到授权文件的生成、验证和最终异常的处理。
    • 下载安装Access 数据库引擎。
  2. 破解阶段:

    • 逐个分析LM.dll文件,找到与授权相关的函数。
    • 分析LM.dll文件源码,找到授权管理类的具体操作。
    • 逐个分析授权管理类的源码,找到与授权相关的函数。
    • 逐个分析与授权相关的函数,找到授权文件的生成、验证和最终异常的处理。
    • 注释掉最终抛出异常的代码,保存后可以直接生效。
    • 成功破解软件。
  3. 后续阶段:

    • 研究授权的逻辑,找到与授权相关的函数。
    • 逐个分析与授权相关的函数,找到授权文件的生成、验证和最终异常的处理。
    • 尝试修复异常。