调用博主最近登录时间
生活中的HYGGE
浅尝Restful Fast Request插件,一句话完成 逆向过程

浅尝Restful Fast Request插件,一句话完成 逆向过程

hygge
2023-04-22 / 18 评论 / 1,939 阅读 / 正在检测是否收录...

浅尝Restful Fast Request插件,一句话完成 逆向过程

本文根据吾爱破解论坛,作者:lvbuqing的帖子浅尝Restful Fast Request插件,一句话完成 逆向过程进行操作复现

1.插件简介

lgrmm064.png

2.破解流程

2.1 检测1-ide层

根据Jetbrains官网插件开发文档了解到,付费插件的配置文件中都会有product-descriptor标签

lgrmm9fn.png

属性介绍

属性名描述
code销售系统中使用的插件产品代码,代码必须提前和Jetbrains约定好,按照要求来。
release-date格式中主要版本发布的日期YYYYMMDD
release-version特殊数字格式的主要版本

安装完重新idea后会卡在
lgrmmgxe.png

,所以先解决这个第一层校验。

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

lgrmmqbe.png

直接移除这一行。

3.我们重新打开idea ,发现已经去掉了收费标识,,我们需要启用后重启

lgrmmx09.png

2.2 检测2-插件层

虽然功能键已经展示出来,但是点击后还是无法使用,会提示先激活插件。

lgrmn2hu.png

jar包解压,发现程序做了国际化,然后全局检索关键字

lgrmn6h7.png

得到关键key值为:ActivatePluginNeed

使用Jadx对程序进行反编译后全局搜索关键key

发现如下的调用

lgrmnede.png

继续查l11Il1III1111.l111I1llllI()这个方法

lgrmnj8o.png

也就是让这个方法返回false

接下来的问题就是如何修改原来的jar文件中的字节码文件

lgrmno1j.png

可以根据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.

lgrmntih.png

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文件进行替换即可。
lgrmo3lo.png

5.效果图

lgrmo8vy.png

lgrmoc4g.png

引用

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

1

评论 (18)

取消
  1. 头像
    Java开发人员
      Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 113.0.0.0 Google Chrome 113.0.0.0

    按照方法做的,现在什么都显示不了了

    回复
    1. 头像
      ByL
        Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 114.0.0.0 Google Chrome 114.0.0.0
      @ Java开发人员

      同样的问题,请问你解决了吗

      回复
      1. 头像
        hygge 作者
          Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 114.0.0.0 Google Chrome 114.0.0.0
        @ ByL

        旧版的可能还有用,新版已经失效了,请注意发布时间。

        回复
  2. 头像
    Java开发人员
      Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 113.0.0.0 Google Chrome 113.0.0.0

    按照文档做的,并没有成功,能用邮箱交流一下吗?

    回复
    1. 头像
      hc
        Mac OS X 10.15.7 Mac OS X 10.15.7  /  Safari 16.6 Safari 16.6
      @ Java开发人员

      主要就是提示激活插件的那个一步

      回复
      1. 头像
        Java开发人员
          Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 114.0.0.0 Google Chrome 114.0.0.0
        @ hc

        你是怎么做的,成功了吗

        回复
        1. 头像
          hc
            Mac OS X 10.15.7 Mac OS X 10.15.7  /  Safari 16.6 Safari 16.6
          @ Java开发人员

          没有

          回复
  3. 头像
    kasen-web
      Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 116.0.0.0 Google Chrome 116.0.0.0

    大佬 jar包能分析一下吗

    回复
  4. 头像
    渣渣开发
      Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0

    感谢指导,已成功破解

    回复
    1. 头像
      渣渣开发
        Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0
      @ 渣渣开发

      需要的自己下载:
      链接: https://pan.baidu.com/s/1hCypg5vAcnXlj74TzwOtTQ?pwd=nd94 提取码: nd94

      回复
      1. 头像
        giskard
          Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0
        @ 渣渣开发

        非常感谢

        回复
      2. 头像
        骑着牛牛追云彩
          Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 123.0.0.0 Google Chrome 123.0.0.0
        @ 渣渣开发

        感谢大佬 终于用上了新版本的!!!!!!

        回复
        1. 头像
          acfun
            Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 123.0.0.0 Google Chrome 123.0.0.0
          @ 骑着牛牛追云彩

          可以分享一下吗?

          回复
          1. 头像
            骑着牛牛追云彩
              Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0
            @ acfun

            链接: https://pan.baidu.com/s/1tF4hH8GUAqJAYYR63Qm-UA?pwd=7drv 提取码: 7drv

            @渣渣开发 希望大佬能后续更新 感谢大佬

            回复
            1. 头像
              渣渣开发
                Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 123.0.0.0 Google Chrome 123.0.0.0
              @ 骑着牛牛追云彩

              链接: https://pan.baidu.com/s/1yYnlWwK--_UC0CVGoTnDUA?pwd=xyqp 提取码: xyqp 复制这段内容后打开百度网盘手机App,操作更方便哦

              回复
              1. 头像
                骑着牛牛追云彩
                  Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0
                @ 渣渣开发

                感谢大佬 跟着思路研究了一下 还是搞不来

                回复
  5. 头像
    Java菜鸟
      Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 123.0.0.0 Google Chrome 123.0.0.0

    感谢提供思路,2024.1.4版本,需要的自取
    https://pan.baidu.com/s/1I9BfJBzcfkblQokwSzHong?pwd=ggqd

    回复
    1. 头像
      骑着牛牛追云彩
        Mac OS X 10.15.7 Mac OS X 10.15.7  /  Google Chrome 122.0.0.0 Google Chrome 122.0.0.0
      @ Java菜鸟

      感谢大佬

      回复