文章预览
一、什么是agent内存马 Java agent本质上可以理解为一个插件,该插件就是一个精心提供的jar包。只是启动方式和普通Jar包有所不同,对于普通的Jar包,通过指定类的main函数进行启动。但是Java Agent并不能单独启动,必须依附在一个Java应用程序运行,在面向切面编程方面应用比较广泛。Java agent 的jar包通过JVMTI(JVM Tool Interface)完成加载,最终借助JPLISAgent(Java Programming Language Instrumentation Services Agent)完成对目标代码的修改。主要功能如下: 可以在加载java文件之前做拦截把字节码做修改 可以在运行期将已经加载的类的字节码做变更 比如我们用到过的Jcoco,Arthas, chaosblade等,都是使用Java agent技术来实现 agent内存马的本质就是通过agentmain方法,修改正在运行的Java类,在其中插入恶意直接码,从而达到命令执行 二、前置知识 Instrumentation类 Instrumentation 是
………………………………