Ja-netfilter(idea破解)分析

Ja-netfilter(idea激活码破解原理)分析

news/2024/4/16 1:26:33/文章来源:https://blog.csdn.net/yangfeng20/article/details/137565926

Ja-netfilter(idea破解)分析

简介

是一款可以破解IDE系列的javaagent 包。

原理简介

通过创造修改字节码的时机。通过修改相关类,达到hook特定方法的作用。主要依赖power(rsa方法hook),url(拦截网络验证码校验),dns(拦截特定域名请求)插件。

原理分析

首先先简单了解下整理流程,后面详细讲解每个步骤。

正常启动idea流程

点击idea快捷方式,或者idea.bat / idea.sh启动。

根据环境变量加载对应vm参数。也就是文件,vm中的内容会作为jvm启动参数添加到启动命令中。

在这里插入图片描述

在这里插入图片描述

本地校验激活码

rpc接口校验激活码

在这里插入图片描述

使用ja-netfilter流程

运行install脚本(通过环境变量指定启动vm参数文件地址),也就是jar包目录下的目录。启动idea。加载ja-netfilter 参数(在ja-netfilter的vm参数中添加了asm支持以及javaagent参数,并指定当前jar包)。运行javaagent,及 的permain方法。 加载ja-netfilter定义的插件,也即plugins目录下的jar包。初始化插件,载入配置,也即config目录下的jar包。通过javaagent提供的类转换能力转换插件hook的类。 本地校验激活码网络rpc校验激活码

在这里插入图片描述

ja-netfilter代码分析

我这里直接调试idea,通过idea.bat启动。启动后在通过agent技术嵌入到idea目录虚拟机中,已达到调试idea的目录。com.janetfilter.core.Launcher是主启动类,定义了permain已经agentmain方法。同时在指定了Premain-Class。

使用idea.bat启动idea

在这里插入图片描述

使用javaagent嵌入到目标虚拟机。

在这里插入图片描述

进入javaagner(ja-netfiler)定义的permain方法,开始执行ja-netfiler逻辑。

在这里插入图片描述

确定插件目录以及配置目录

在这里插入图片描述

加载插件,加载配置并初始化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ja-netfiler插件介绍

ja-netfiler的插件结构大致可以分为三类 插件入口类(例如:),用来注册对应的类转换器。Transformer类(例如:),用来定义需要hook的类名,以及hook方法的逻辑。过滤器业务逻辑类(例如:),类转换之后被hook会真正调用到的类,一般用于拦截或者替换。

dns插件

DNSFilterPlugin

初始化转换类并注册

在这里插入图片描述

InetAddressTransformer

hook了类的方法以及方法。

在这里插入图片描述

修改之后的InetAddress代码大致如下:

DNSFilter

在这里插入图片描述

总结

dns插件hook了InetAddress类的getAllByName方法,如何匹配配置的域名,则抛出UnknownHostException异常。以及isReachable方法,如何匹配规则则返回false。

dns对应配置

也就是访问jetbrains.com以及plugin.obroom.com都是失败的。

power插件

总结

power插件hook了的方法,这个方法是用来对一个数模取幂运算的,及。RSA非对称加密底层会使用到当前方法。

可以简单理解为在oddModPow函数前加了一段逻辑,就是如果入参x,y,z匹配配置的规则,那么就返回规则配置的结果。

url插件

总结

url插件hook了的方法。在执行逻辑之前调用testUrl方法。

testUrl方法中的逻辑为如果匹配了规则中设置的url,那么就抛出SocketTimeoutException异常,也即不能访问指定url。

对应规则为

那么这里就是只要前缀匹配了当前地址,也即是rpc校验激活码的地址,那么就会抛出异常,自然也就无法网络校验了。

Idea调试

可以看到,在输入验证码之后,会调用相关方法来校验激活码,这里就会调用到插件的方法。如果匹配了对应的配置,就会给出一个结果来替换oddModPow的结果。

在这里插入图片描述

校验验证码成功,激活成功

在这里插入图片描述

点击继续,关闭弹窗,idea会调用rpc接口校验验证码,插件匹配规则,抛出异常。

在这里插入图片描述

参考

https://zhuanlan.zhihu.com/p/494706735

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/614959.html 如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除! 相关文章

线 程 池

线 程 池

1. 线程池

1.1 线程状态介绍

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程

状态被定义在了java.lang.Thread.Stat… 阅读更多...

postgresql uuid

postgresql uuid

示例数据库版本PG16,对于参照官方文档截图,可以在最上方切换到对应版本查看,相差不大。 方法一:自带函数 select gen_random_uuid(); 去掉四个斜杠,简化成32位 select replace(gen_random_uuid()::text, -, ); 官网介绍… 阅读更多...

Spring Cloud系列(二):Eureka Server应用

Spring Cloud系列(二):Eureka Server应用

系列文章

Spring Cloud系列(一):Spirng Cloud变化

Spring Cloud系列(二):Eureka Server应用 目录

前言

注册中心对比 Nacos Zookeeper Consul

搭建服务 准备 搭建 搭建父模块 搭建Server模块

启动服务

测试

其他 前言

前面针对新版本的变化有了… 阅读更多...

【vue】v-model.lazy等(非实时渲染)

【vue】v-model.lazy等(非实时渲染)

v-model&#xff1a;实时渲染v-model.lazy&#xff1a;失去焦点/按回车后&#xff0c;才渲染v-model.number&#xff1a;值转换为数字v-model.trim&#xff1a;去除首尾空格 <!DOCTYPE html>

<html lang"en"><head><meta charset"UTF-8&qu… 阅读更多...

ansible的常见用法

ansible的常见用法

目录

##编辑hosts文件

##copy模块##复制过去

##fetch模块##拉取

##shell模块 ##好用

##command模块##

##file模块###

##cron模块###

##crontab 计划任务

##下载好时间插件

##script模块

##yum模块##

##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo

##ser… 阅读更多...

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型的出现

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型的出现

概述

大规模语言模型在理解和生成人类语言方面具有非凡的能力&#xff0c;但迄今为止&#xff0c;它们的能力主要局限于文本处理。然而&#xff0c;现实世界是一个多模式的环境&#xff0c;信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要… 阅读更多...

刷题之动态规划-两个数组

刷题之动态规划-两个数组

前言

大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的两个数组类型相关的题目

动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程&#xff1a; dp[i] 等于什么1 和 2 是动态规划的核心步骤&#xff0… 阅读更多...

php其他反序列化知识学习

php其他反序列化知识学习

简单总结一下最近学习的&#xff0c;php其他的一些反序列化知识 phar soap session 其他 __wakeup绕过gc绕过异常非公有属性&#xff0c;类名大小写不敏感正则匹配&#xff0c;十六进制绕过关键字检测原生类的利用

phar

基础知识

在 之前学习的反序列化利用中&#xff0… 阅读更多...

go websocket

go websocket

WebSocket 是一种网络协议&#xff0c;建立在 HTTP 协议之上&#xff0c;允许双向通信。WebSocket 协议允许服务器发送数据到客户端&#xff0c;同时也可以让客户端向服务器发送数据。WebSocket 使用 HTTP 协议的升级请求和响应来建立连接。WebSocket 的主要优点在于它可以通过… 阅读更多...

【JAVA基础篇教学】第十篇:Java中Map详解说明

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十篇&#xff1a;Java中Map详解说明。 在 Java 编程中&#xff0c;Map 接口代表了一种键值对的集合&#xff0c;每个键对应一个值。Map 接口提供了一系列操作方法&#xff0c;可以方便地对键值对进行增删改查等操作。本… 阅读更多...

开源模型应用落地-chatglm3-6b-zero/one/few-shot-入门篇(五)

开源模型应用落地-chatglm3-6b-zero/one/few-shot-入门篇(五)

一、前言 Zero-Shot、One-Shot和Few-Shot是机器学习领域中重要的概念&#xff0c;特别是在自然语言处理和计算机视觉领域。通过Zero-Shot、One-Shot和Few-Shot学习&#xff0c;模型可以更好地处理未知的情况和新任务&#xff0c;减少对大量标注数据的依赖&#xff0c;提高模型的… 阅读更多...

带函数的多代理 AutoGen - 使用代码示例分步

带函数的多代理 AutoGen - 使用代码示例分步

目录 一、说明二、AutoGen 的本质&#xff1a;可对话和可定制的代理2.1 简化任务自动化和人机交互2.2 赋能动态对话 三、分步代码示例3.1 第 1 步&#xff1a;安装必要的库3.2 第 2 步&#xff1a;设置 API 终端节点3.3 第 3 步&#xff1a;导入库并设置配置3.4 第 4 步&#… 阅读更多...

JavaScript函数式编程

JavaScript函数式编程

函数式编程

课程介绍

为什么要学习函数编程以及什么是函数式编程函数式编程的特性(纯函数、柯里化、函数组合等)函数式编程的应用场景函数式编程库Lodash

为什么要学习函数式编程

函数式编程是非常古老的一个概念&#xff0c;早于第一台计算机的诞生&#xff0c; 函数式编程… 阅读更多...

c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)

c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609;

&#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客

1. 游戏背景 贪吃蛇是久负盛名的游戏&#xff0c;它也和俄罗斯⽅… 阅读更多...

如何做好软件平台的全生命周期管理?

如何做好软件平台的全生命周期管理?

一、为何需生命周期管理

做好软件平台的全生命周期管理至关重要&#xff0c;主要原因如下&#xff1a; 确保软件质量&#xff1a; 全生命周期管理涵盖了从需求分析、设计、开发、测试、部署、运行维护到废弃的全过程&#xff0c;通过有效的管理可以确保每个阶段的质量控制&… 阅读更多...

Linux-docker安装数据库redis

Linux-docker安装数据库redis

1.拉取redis镜像

docker pull redis # 下载最新的redis版本

docker pull redis:版本号 # 下载指定的redis版本ps&#xff1a;我这是已经下载最新版本的redis 2.查看redis镜像

docker images3.创建挂在路径并授权

mkdir -p /usr/local/redis/data

mkdir -p /usr/local… 阅读更多...

【贡献者列表】如何为你的文档添加贡献者头像

【贡献者列表】如何为你的文档添加贡献者头像

相关pr&#xff1a;

https://github.com/ant-design/ant-design-web3/pull/790

源码仓库:

https://github.com/thinkasany/contributors-list

使用代码

npm i github-contributors-lists使用效果 实现原理

通过 github api https://api.github.com/repos/${owner}/${repo… 阅读更多...

C/C++内存泄漏及检测

C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”&#xff0c;项目中由于各方面因素&#xff0c;总是有人抱怨存在内存泄漏&#xff0c;系统长时间运行之后&#xff0c;可用内存越来越少&#xff0c;甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一&#xff0c;因为除非用完内存或调用… 阅读更多...

RCTKG:针对用户的罕见病临床试验知识图谱

RCTKG:针对用户的罕见病临床试验知识图谱

RCTKG&#xff1a;针对用户的罕见病临床试验知识图谱 提出背景构建方法RCTKG 介绍 提出背景

RCTKG 论文&#xff1a;https://ebooks.iospress.nl/doi/10.3233/SHTI230934

RCTKG 平台&#xff1a;http://54.205.155.56:7474/browser/

罕见病检索平台&#xff1a;PubCaseFinde… 阅读更多...

如何在极狐GitLab 使用Docker 仓库功能

如何在极狐GitLab 使用Docker 仓库功能

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。

本文主要讲述了如何在[极狐GitLab… 阅读更多...