04 2020 档案
摘要:MethodVisitor ClassVisitor的visitMethod能够访问到类中某个方法的一些入口信息,那么针对具体方法中字节码的访问是由MethodVisitor来进行的 访问顺序如下,其中visitCode和visitMaxs仅调用一次,标志方法字节码访问的开始和结束 MethodVi
阅读全文
摘要:1.编译后的方法区,其中存储的代码都是一些字节码指令 2.Java虚拟机执行模型: java代码是在一个线程内部执行,每个线程都有自己的执行栈,栈由帧组成,每个帧表示一个方法的调用,每调用一个方法,都将将新的帧压入执行栈,方法返回时(不管是整成return还是异常返回),该方法对应的帧都将出栈,即按
阅读全文
摘要:Instrumentation基础 openrasp中用到了Instrumentation技术,它的最大作用,就是类的动态改变和操作。 使用Instrumentation实际上也可以可以开发一个代理来监视jvm的上运行的程序,可以动态的替换类的定义,就可以达到虚拟机级别的AOP实现,随时可以为应用增
阅读全文
摘要:ASM也是字节码编辑库,如果我们的目的仅仅是为目标类添加某些功能,也可以考虑动态代理,但是动态代理是面向接口的,因为proxy.newinstance实际上是对某个接口定义一个invocaionHandler,那么这样限制就比较大,并且对代理的每一次函数调用都将被invocationHandler处
阅读全文
摘要:HashSet Java中的集合(Collection)有三类,一类是List,一类是Queue,再有一类就是Set。 前两个集合内的元素是有序的,元素可以重复;最后一个集合内的元素无序,但元素不可重复。 Set: 1.用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复 2.对象的相等性本质
阅读全文
摘要:这篇文章记录一下hashmap的学习过程,文章并没有涉及hashmap整个源码,只学习一些重要部分,如有表述错误还请在评论区指出~ 基本概念 Hashmap采用key算hash映射到具体的value,因此查找效率为o(1),为防止hash冲突,在数组的基础上加入链表、红黑树,为无序非线程安全的存储结
阅读全文
摘要:从今天开始从源码去学习一些Java的常用数据结构,打好基础:) Arraylist源码阅读: jdk版本:1.8.0 首先看其构造方法: 构造方法一: 第一种支持初始化容量大小,其中声明一个对象数组,赋值给this.elementdata 构造方法二: 第二种无参构造函数,即不指定初始容量大小,则默
阅读全文
摘要:本文首发于oppo安全应急响应中心: https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247485488&idx=1&sn=65098eb75e035ff2f90d1ea552c4100a&chksm=fa7b097ccd0c806a40
阅读全文
摘要:漏洞说明: Liferay是一个开源的Portal(认证)产品,提供对多个独立系统的内容集成,为企业信息、流程等的整合提供了一套完整的解决方案,和其他商业产品相比,Liferay有着很多优良的特性,而且免费,在全球都有较多用户. 该洞是个反序列化导致的rce,通过未授权访问其api传递json数据进
阅读全文
摘要:环境准备: pom: <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <ver
阅读全文