ReSharper 以前网上还很容易找到破解补丁,针对新版的补丁已经找不到了,只能自己动手了,其实并不难,和其他用 Java 开发的软件是同一套流程,激活码也是一样的。
离线安装包下载地址:https://www.jetbrains.com/resharper/download/other.html
本次破解的是最新版本 2025.2.2.1:https://download.jetbrains.com/resharper/dotUltimate.2025.2.2.1/JetBrains.dotUltimate.2025.2.2.1.exe
#破解证书验证
根据破解 Java 软件的经验,可以大胆推测这个用 C# 开发的插件也是用一样的思路去破解,先解决证书验证问题,可以用 dnSpy 调试JetBrains.Platform.Shell.dll文件,搜索X509Certificate2关键字查找软件验证的地方。
根据一顿调试后发现关键的UserLicenseService.DecodeLicense方法:
1 | public INewLicenseData DecodeLicense(string base64) |
UserLicenseService.VerifyCertificate是个静态方法,用于验证证书。
1 | public static UserLicenseService.CertificateValidationResult VerifyCertificate(CertificateRevocationList crl, X509Certificate2 primaryCert, bool checkCertificateTimeValidity, params X509Certificate2[] additionalCertificates) |
破解之法就是要让这个方法返回UserLicenseService.CertificateValidationResult.OK。
一开始我用 dnSpy 直接编辑这个方法,但是修改之后 VS 就无法加载插件了,可能是 .NET 程序集强签名的关键,于是我搜索到了这篇文章:ReSharper破解过程。
这篇文章已经很老了,也能看出来这么些年验证过程基本是没变化的。不过这作者解决强签名问题的办法实在太不优雅了。
#制作补丁
以前在某论坛中下载过一个用 VS 插件的破解方式挺开脑洞的,于是我也尝试了下,依然是可行的,思路就是自己开发一个 VS 扩展,用第三方库 hook 去 patch 对应的代码,这样可以做到不修改JetBrains.Platform.Shell.dll文件,比较优雅。
如何制作 VS 扩展就不展开说了,网上有教程,问问 AI 十分钟就搞定了,在项目中引入Lib.Harmony库,它是用来 hook 的。
核心代码如下:
1 | using HarmonyLib; |
这个补丁会在VerifyCertificate返回后执行,如果返回值不是 0(UserLicenseService.CertificateValidationResult.OK)就将返回值改为UserLicenseService.CertificateValidationResult.OK。
证书验证这一关过了,但是它还会向服务器验证一次

#禁止联网验证
搜索字符串License server response定位到ClientUtil.ExecuteRequest中
1 | public static TResponse ExecuteRequest<TResponse>(string baseUrl, AbstractRequest<TResponse> request, IWebProxy proxy, [CanBeNull] BlackList blackList, int timeoutInMilliseconds = 0) where TResponse : AbstractResponse |
分析调用栈,发现在UserLicenseViewSubmodel.AddLicense方法中存在调用UserLicenseViewSubmodel.ValidateLicenseKey的行为:
1 | public bool AddLicense(UserLicense userLicense, bool doCheckSynchronousely, bool validateLicenseKey = false) |
而AddLicense的第3个参数正是控制是否联网验证的关键!
继续打补丁:
1 | using HarmonyLib; |
接着只要输入一个合法的激活码就行了(参考之前文章中的 KeyGen)

#其他几个 .NET 软件
上面只是将 VS 插件解决掉了,独立的dotCover、dotTrace、dotMemory软件依然是未授权的,另外一个dotPeek因为官方将其免费了所以不需要授权。

因为这几款软件不是 VS 插件,且又是 .NET 开发的,所以不能用ja-netfilter那套去破解。
全盘搜索JetBrains.Platform.Shell.dll文件,发现其实每个软件下都有一份JetBrains.Platform.Shell.dll,所以我们需要想办法在软件启动时加载我们的补丁。

查看所有JetBrains.Platform.Shell.dll文件,都是同样的版本,所以就确定了破解方法和前面的插件一样,不同的是这几个软件是独立运行的,所以要么修改JetBrains.Platform.Shell.dll,要么通过某种方法劫持打补丁。
第一反应当然是直接用 dnSpy 编辑,但是这样会破坏 DLL 的签名,导致 CLR 拒绝加载,于是我找到了这篇文章《ReSharper破解过程》。
文章中的解决方法是编辑 StrongNameSignatureVerification 的返回值,测试发现行不通了。
这篇文章发布于 2016 年,.NET 也更新了 N 个版本了,至少确定在新的 .NET 中已经不用 StrongNameSignatureVerification 来验证了。
最后在签名这个事情上折腾了很久,最终还是放弃了,编辑文件弊端就是要修改很多文件,兼容性不好不说,升级软件后又要重新编辑一次。
于是我决定从主程序下手,也就是启动的那个 exe 文件,找到一篇介绍劫持.NET Framework程序的方法:AppDomainManager后门的实现思路
这里就不细说了,最终劫持代码如下:
1 | public sealed class DomainManager : AppDomainManager |