浅尝Restful Fast Request插件,一句话完成 逆向过程
本文根据吾爱破解论坛,作者:lvbuqing的帖子浅尝Restful Fast Request插件,一句话完成 逆向过程进行操作复现
1.插件简介
2.破解流程
2.1 检测1-ide层
根据Jetbrains官网插件开发文档了解到,付费插件的配置文件中都会有product-descriptor
标签
属性介绍
属性名 | 描述 |
---|---|
code | 销售系统中使用的插件产品代码,代码必须提前和Jetbrains约定好,按照要求来。 |
release-date | 格式中主要版本发布的日期YYYYMMDD |
release-version | 特殊数字格式的主要版本 |
安装完重新idea后会卡在
,所以先解决这个第一层校验。
1.找到插件的lib
目录
我使用的Toolbox
,目录在:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\231.8109.175.plugins\Restful Fast Request\lib
该插件的关键jar
包为:instrumented-restful-fast-request-pro-2023.1.3.2.jar
2.直接使用压缩包打开jar
文件,使用vscode
编辑 META-INF\plugin.xml
直接移除这一行。
3.我们重新打开idea ,发现已经去掉了收费标识,,我们需要启用后重启
2.2 检测2-插件层
虽然功能键已经展示出来,但是点击后还是无法使用,会提示先激活插件。
jar
包解压,发现程序做了国际化,然后全局检索关键字
得到关键key
值为:ActivatePluginNeed
使用Jadx
对程序进行反编译后全局搜索关键key
发现如下的调用
继续查l11Il1III1111.l111I1llllI()
这个方法
也就是让这个方法返回false
接下来的问题就是如何修改原来的jar
文件中的字节码文件
可以根据Javassist
来实现
3.Javassist
Javassist (Java Programming Assistant) makes Java bytecode manipulation simple. It is a class library for editing bytecodes in Java; it enables Java programs to define a new class at runtime and to modify a class file when the JVM loads it. Unlike other similar bytecode editors, Javassist provides two levels of API: source level and bytecode level. If the users use the source-level API, they can edit a class file without knowledge of the specifications of the Java bytecode. The whole API is designed with only the vocabulary of the Java language. You can even specify inserted bytecode in the form of source text; Javassist compiles it on the fly. On the other hand, the bytecode-level API allows the users to directly edit a class file as other editors.
3.1 什么是javassist
javassist
是一个处理Java字节码的jar包,里面有很多类。
3.2 什么是ClassPool
可以想象成一个容器,里面放着指定路径下的class文件,使用javassist对类进行操作的时候,必须先创建一个ClassPool。
它也可以暂时存放我们编辑的class文件,等写完后再拿出来放到指定的位置。我们对class文件的操作是在ClassPool中的进行的。
假如我们想获取一个Class文件进行修改,如果ClassPool的路径中没有它,那么我们是找不到的,必须使用insertClassPath();
函数将class文件路径导入ClassPool中才可以。
如果我们不自定义路径,那么它的类的搜索路径包括平台库、扩展库以及由-classpath选项或CLASSPATH环境变量指定的搜索路径。
3.3 什么是CtClass
CtClass是javassist中的一个类文件,它的对象可以理解成一个class文件的抽象表示。
一个CtClass对象可以用来修改一个class文件。
4.Javassist实操修改字节码文件
4.1 项目导包
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>
4.2 编写代码
package com.lisok.test;
import javassist.*;
import java.io.IOException;
public class HookMain {
public static void hookMethod() throws NotFoundException, CannotCompileException, IOException {
ClassPool pool = ClassPool.getDefault();
// jar包路径
pool.insertClassPath("D:\\Tools\\AndroidReverse\\instrumented-restful-fast-request-pro-2023.1.3.2.jar");
CtClass driverClass = pool.get("io.github.kings1990.plugin.fastrequest.cofig.l11Il1III1111");
CtMethod[] declaredMethods = driverClass.getDeclaredMethods();
CtMethod hookMethod = null;
for (CtMethod declaredMethod : declaredMethods) {
String name = declaredMethod.getName();
if (name.equals("l111I1llllI")) {
hookMethod = declaredMethod;
break;
}
}
if (hookMethod != null) {
System.out.println(hookMethod.getDeclaringClass());
hookMethod.setBody("return false;");
}
driverClass.writeFile("writefile");
}
public static void main(String[] args) {
try {
hookMethod();
} catch (NotFoundException | CannotCompileException | IOException e) {
e.printStackTrace();
}
}
}
运行后项目会出现writefile
目录,找到目标文件后,使用压缩包打开原jar
文件进行替换即可。
5.效果图
引用
1.浅尝Restful Fast Request插件,一句话完成 逆向过程:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1776910&pid=46474186&page=1&extra=#pid46474186
2.Javassist by jboss-javassist:https://www.javassist.org/
3.java中javassist、ClassPool、CtClass、Apache CC2链学习:https://blog.csdn.net/qq_41874930/article/details/121273650
4.Javassist用法详解:https://www.jb51.net/article/205638.htm
按照方法做的,现在什么都显示不了了
同样的问题,请问你解决了吗
旧版的可能还有用,新版已经失效了,请注意发布时间。
按照文档做的,并没有成功,能用邮箱交流一下吗?
主要就是提示激活插件的那个一步
你是怎么做的,成功了吗
没有
大佬 jar包能分析一下吗
感谢指导,已成功破解
需要的自己下载:
链接: https://pan.baidu.com/s/1hCypg5vAcnXlj74TzwOtTQ?pwd=nd94 提取码: nd94
非常感谢
感谢大佬 终于用上了新版本的!!!!!!
可以分享一下吗?
链接: https://pan.baidu.com/s/1tF4hH8GUAqJAYYR63Qm-UA?pwd=7drv 提取码: 7drv
@渣渣开发 希望大佬能后续更新 感谢大佬
链接: https://pan.baidu.com/s/1yYnlWwK--_UC0CVGoTnDUA?pwd=xyqp 提取码: xyqp 复制这段内容后打开百度网盘手机App,操作更方便哦
感谢大佬 跟着思路研究了一下 还是搞不来
大佬 新版本出来了 能否更新一版了?
感谢提供思路,2024.1.4版本,需要的自取
https://pan.baidu.com/s/1I9BfJBzcfkblQokwSzHong?pwd=ggqd
感谢大佬
大佬 新版出来了 能否更新一版了
打开你的jetbra\config-jetbrains\url.conf,加入一行PREFIX,http://116.62.33.138,使用热佬的激活码激活即可
若无法打开热佬网站,可安装油猴脚本获取激活码:https://greasyfork.org/zh-CN/scripts/480799-jetbra/discussions/233036
PS:注意评论区
请叫我雷锋![表情](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
大佬 这点不清楚在哪里打开 打开你的jetbra\config-jetbrains\url.conf,加入一行PREFIX,http://116.62.33.138,
[URL]
PREFIX,https://account.jetbrains.com/lservice/rpc/validateKey.action
PREFIX,http://116.62.33.138
这里加了
然后
ja-netfilter.v3\config power.conf 这里的最后面页加了评论区 里面的那个代码
貌似还是不行 麻烦大佬解惑![表情](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
power.conf需要加在[Result]组内
感谢大佬
可以了![表情](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
我手动生成了license,后面用楼主的javasist hook了代码,成功运行,
下面方法返回true即可, 2024.5.1 版
io.github.kings1990.plugin.fastrequest.cofig.IlI1lll1IIl11Il1Il1I#fastRequest
大佬能否分享一下最新的
可以试试Cool Request插件