JetBrains激活码(JetBrains IDEA注册原理学习)

JetBrains激活码(JetBrains IDEA注册原理学习)

背景

下载 IntelliJ IDEA 2023.2.1 (Ultimate Edition)版本,采用这篇文章中的方式 IDEA 激活到 2099 年。有图为证如下: JetBrains激活码(JetBrains IDEA注册原理学习)

激活的基本思路是采用 Java Agent 技术拦截注册验证逻辑,绕过服务端,告诉客户端自己是合法的。本文主要分析拦截了哪些点,做了什么修改,但是不包括激活注册码的生成。

初步分析

从教程中看核心的一步是增加了 IDEA JVM 启动时参数-javaagent:/Users/[user]/tools/jihuo-tool-2099/active-agt-idea.jar,可以确定采用的是 Java Agent 拦截技术。 JetBrains激活码(JetBrains IDEA注册原理学习)

为了搞清楚 Java Agent 中做了什么,使用 JD-GUI 反编译 jihuo-tool-2099 目录下 jar 文件。 JetBrains激活码(JetBrains IDEA注册原理学习)

从反编译后的源文件看,使用的是 janetfilter 包。 JetBrains激活码(JetBrains IDEA注册原理学习)

从网上搜索了一下,janetfilter 来自ja-netfilter.com,来自一位@pengzhile的大佬,但是这个网站貌似已经不能访问了。知乎有一个[大神](https://zhuanlan.z…

github 上 ja-netfilter 代码仓库插件部分不全,gitee 上找到一个比较全的(@pengzhile 大神的),于是 fork 出来几个项目看源码。

序号模块介绍1gitee.com/shidongwa/j…JVM Options 加载的 java agent2gitee.com/shidongwa/p…插件:激活验证码时非对称加解密3gitee.com/shidongwa/p…插件:屏蔽 jetbrains.com4gitee.com/shidongwa/p…插件:屏蔽account.jetbrains.com/lservice/rp…5config 目录下的*.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 逻辑简介urlsun/net/www/http/HttpClient.openServer验证注册码时拦截返回 SocketTimeoutExceptiondnsjava/net/InetAddress.getAllByName 和 isReachable拦截返回 java.net.UnknownHostException 和 jetbrains.com 域名不可达powerjava/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 包加上bianchenghao.cn/jetbrains/i…

前文中提到的@pengzhile 大佬个人网站有很多原始资料。这篇博文中其实提到了如何获取完整 jar 包+配置+激活码。我试了一下,可以用。文中提到的热心大佬很神秘,另外一个中本聪?

JetBrains激活码JetBrains激活码(JetBrains IDEA注册原理学习)

框架和插件扩展

ja-netfilter 设计时考虑了扩展性,通过自定义插件和配置,GoLand、PyCharm、DataGrip 等都可以采用同样的思路激活。

总结

本文学习了 Java Agent 拦截绕过 Jetbrains 注册流程。如果你对 Java Agent,ASM 字节码不感兴趣,只对激活 IDEA 感兴趣的话,有两种方式获取(JetBrains激活码亲测都可用)。

  1. 激活到 2099 年
  2. 激活到 2025 年,动态更新。随便点开一个网站,下载 jar 和配置,提取激活码

免责声明

如果您觉得本程序好用,建议JetBrains激活码您立即删除本程序并购买正版;本项目只做个人学习研究之用,不得用于商业用途!

今天的文章
JetBrains激活码(JetBrains IDEA注册原理学习)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/99196.html

(0)
编程小号编程小号
上一篇 2024-06-22
下一篇 2024-06-22

相关推荐