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

查看 49|回复 3
作者:lvbuqing   
插件如图


插件图1.png (79.16 KB, 下载次数: 0)
下载附件
2023-4-21 18:06 上传

功能如下:


插件图2.png (138.09 KB, 下载次数: 0)
下载附件
2023-4-21 18:07 上传

我们通过idea自带的插件 市场安装:
可以看到它是收费的。


插件图3.png (20.39 KB, 下载次数: 0)
下载附件
2023-4-21 18:12 上传

根据官方开发文档:


文档1.png (143.48 KB, 下载次数: 0)
下载附件
2023-4-21 18:19 上传

我们知道,要开发这个收费的插件,需要用到:product-descriptor 这个属性。
属性介绍:
[backcolor=rgba(25, 25, 28, 0.05)]code:JetBrains 销售系统中使用的插件产品代码。代码必须提前和JetBrains约定好,按照要求来。
[backcolor=rgba(25, 25, 28, 0.05)]release-date:格式中主要版本发布的日期YYYYMMDD
[backcolor=rgba(25, 25, 28, 0.05)]release-version:特殊数字格式的主要版本
=============
首先,我们先搞定他的收费,不然都进不了idea页面。
会出现这个界面:


插件图4.png (50.97 KB, 下载次数: 0)
下载附件
2023-4-21 18:14 上传

打开安装目录:
C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2023.1\plugins\Restful Fast Request\lib
找到这个程序包:instrumented-restful-fast-request-pro-2023.1.3.2.jar
找到插件文件:
instrumented-restful-fast-request-pro-2023.1.3.2.jar\META-INF\plugin.xml
删除


代码1.png (27.87 KB, 下载次数: 0)
下载附件
2023-4-21 18:22 上传

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


插件图5.png (14.74 KB, 下载次数: 0)
下载附件
2023-4-21 18:25 上传

启用后如下,发现菜单已经出来了:


插件图6.png (178.55 KB, 下载次数: 0)
下载附件
2023-4-21 18:27 上传

右下角会弹激活的窗口:


激活.png (16.34 KB, 下载次数: 0)
下载附件
2023-4-21 18:28 上传

关键字:请先激活插件
打开包发现插件做了国家化,直接搜索关键字即可:


插件图7.png (101.47 KB, 下载次数: 0)
下载附件
2023-4-21 18:30 上传

解压文件fr_zh_CN.properties到本地,搜索:请先激活插件
发现:ActivatePluginNeed=请先激活插件
发现如下代码调用:


插件图8.png (152.61 KB, 下载次数: 0)
下载附件
2023-4-21 18:33 上传

成立条件:l11Il1III1111.l111I1llllI()
这个返回true


插件图9.png (58.54 KB, 下载次数: 0)
下载附件
2023-4-21 18:34 上传

知道了问题所在,处理方法就是
[color=]让这个方法返回true
代码如下:
[Asm] 纯文本查看 复制代码    public static void hookmethod() {
        ctclass driverclass = classpool.getdefault().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");
    }
执行完之后,会生成如下文件:


插件图10.png (23.12 KB, 下载次数: 0)
下载附件
2023-4-21 18:39 上传

替换包里面原本的class文件即可。


插件图11.png (218.1 KB, 下载次数: 0)
下载附件
2023-4-21 18:43 上传

功能正常,可以请求。
完结,撒花!!

下载次数, 插件

tfl1   

感谢分享,学习一下楼主的思路。
宝宝很腻害   

你好,请问
public static void hookmethod() {
    ctclass driverclass = classpool.getdefault().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");
}
这段代码怎么执行啊
导入代码,都是爆红,能告知一下在哪执行吗
时光书窝   

学习一下大佬,俺也试试
您需要登录后才可以回帖 登录 | 立即注册

返回顶部