JetBrains IDEA破解原理学习
IDEA破解原理学习
背景
我下载的 IntelliJ IDEA 2023.2.1 (Ultimate Edition)版本,采用这篇文章中的方式 IDEA 激活到 2099 年。
激活的基本思路是采用 Java Agent 技术拦截注册验证逻辑,绕过服务端,告诉客户端自己是合法的。本文主要分析拦截了哪些点,做了什么修改,但是不包括激活注册码的生成。
初步分析
从教程中看核心的一步是增加了 IDEA JVM 启动时参数-javaagent:/Users/[user]/tools/jihuo-tool-2099/active-agt-idea.jar,可以确定采用的是 Java Agent 拦截技术。
为了搞清楚 Java Agent 中做了什么,使用 JD-GUI 反编译 jihuo-tool-2099 目录下 jar 文件。
从反编译后的源文件看,使用的是 janetfilter 包。
从网上搜索了一下,janetfilter 来自https://ja-netfilter.com,来自一位@pengzhile的大佬,但是这个网站貌似已经不能访问了。知乎有一个大神从框架和字节码层面对代码做了比较细致的分析。
github 上 ja-netfilter 代码仓库插件部分不全,gitee 上找到一个比较全的(@pengzhile 大神的),于是 fork 出来几个项目看源码。
序号
模块
介绍
1
https://gitee.com/shidongwa/ja-netfilter
JVM Options 加载的 java agent
2
https://gitee.com/shidongwa/plugin-power
插件:激活验证码时非对称加解密
3
https://gitee.com/shidongwa/plugin-dns
插件:屏蔽 jetbrains.com
4
https://gitee.com/shidongwa/plugin-url
插件:屏蔽https://account.jetbrains.com/lservice/rpc/validateKey.action
5
config 目录下的*.conf
插件配置包括 url,dns 和 power
进阶
Java Agent
这部分对了解 Java Agent 的同学来说比较好理解,在 IDEA 启动时 main 主流程执行前通过 Java Agent premain 加载 ja-netfilter 框架和插件;注册码激活阶段,url、dns 和 power 插件 hook 点产生拦截,改写原有的验证逻辑。这部分功能还是比较透明的,主要逻辑在 ja-netfilter 项目中。了解 Java Agent、ClassFileTransformer、ASM 的同学来说不是难事。
hook 点
主要定义在 plugin-url,plugin-dns 和 plugin-power 三个项目中。
插件
hook 点
hook 逻辑简介
url
sun/net/www/http/HttpClient.openServer
验证注册码时拦截返回 SocketTimeoutException
dns
java/net/InetAddress.getAllByName 和 isReachable
拦截返回 java.net.UnknownHostException 和 jetbrains.com 域名不可达
power
java/math/BigInteger.oddModPow
拦截幂指数取模方法,非对称加解密用到
拦截域名和激活网站的访问
以 url 插件为例,hook 逻辑拦截了 sun/net/www/http/HttpClient 类 openServer 调用。从 HttpClient 类中获取 url 属性,作为参数调用 URLFilter.testURL 方法,如果和 url.conf 配置的验证地址匹配,直接返回 SocketTimeoutException 异常终止检查流程。假设我是正版用户,现在本地上不了网,你总不能禁止我用 IDEA 吧?
采用 ASM 在方法入口处插入字节码
翻译后的字节码逻辑
字节码中调用的方法逻辑
url.conf
拦截激活逻辑
url 和 dns 插件都比较好理解,核心是 power 这个插件逻辑是黑盒。power 的配置 conf 和激活码有关。
贴一下 power.conf 配置感受一下。power 插件通过拦截 java/math/BigInteger 的 oddModPow 方法(幂指取模,非对称加解密用到),通过匹配到几个**大数参数后,直接返回结果大数。配置中这几个大数**都是黑盒,猜测和提供的激活码是一一对应的。
配置和激活码
用 gitee 或者 github 中的项目编译生成 jar 包加上https://blog.idejihuo.com/jetbrains/intellij-idea-2023-1-3-activation-code-cracking-to-2099.html中的配置和激活码IDEA并不能启动成功。猜测jar包+配置+激活码必须要匹配。
前文中提到的@pengzhile 大佬个人网站有很多原始资料。这篇博文中其实提到了如何获取完整 jar 包+配置+激活码。我试了一下,可以用。文中提到的热心大佬很神秘,另外一个中本聪?
框架和插件扩展
ja-netfilter 设计时考虑了扩展性,通过自定义插件和配置,GoLand、PyCharm、DataGrip 等都可以采用同样的思路激活。
总结
本文学习了 Java Agent 拦截绕过 Jetbrains 注册流程。如果你对 Java Agent,ASM 字节码不感兴趣,只对激活 IDEA 感兴趣的话,有两种方式获取(亲测都可用)。
激活到 2099 年
激活到 2025 年,动态更新。随便点开一个网站,下载 jar 和配置,提取激活码
免责声明
如果您觉得本程序好用,建议您立即删除本程序并购买正版;本项目只做个人学习研究之用,不得用于商业用途!