• 浅看BCEL字节码


    什么是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


    __EOF__

  • 本文作者: F12
  • 本文链接: https://www.cnblogs.com/f12-blog/p/18108982
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    软考笔记(3)——浮点数
    【无标题】
    Bootstrap,浅入一下。
    Vue+Element 仿飞书表格||甘特图表格 ,搜索、筛选、字段管理、卡片管理功能
    ES的测试连通性
    数据结构与算法课后题-第六章(图的存储及基本操作)
    Java 下载excel文件
    『手撕Vue-CLI』拷贝模板
    ORACLE AutoVue 服务器/桌面版/WebService/SDK安装
    8.jib-maven-plugin构建springboot项目镜像,docker部署配置
  • 原文地址:https://www.cnblogs.com/F12-blog/p/18108982