JAVA攻防-Agent技术&JVM字节码&Premain启动加载&Agentmain运行附加&内存马应用

知识点:

Java攻防-Agent技术-JVM&启动加载&运行附加&内存马应用

演示案例-Java攻防-Agent技术-JVM&启动加载&运行附加&内存马应用

Java Agent是一种可以在JVM启动时或运行时附加的工具,它可以拦截并修改类文件字节码。Java Agent通常用于实现AOP(面向切面编程)、性能监控、日志记录等功能。

文章参考:docs.dingtalk.com/i/nodes/QPGYqjpJYrPrKaQ5UE6eZkY38akx1Z5N







一、Java Agent有两种加载方式:

1、Premain使用

bash 复制代码
在JVM启动时通过命令行参数-javaagent:path/to/xx.jar来指定。
就是使用java运行一个1.jar文件并指定这个命令参数指向2.jar后,可以使用2.jar的代码影响到1.jar的代码正常运行。
















bash 复制代码
mvn package
mvn clean package
java -cp . zero.overflow.Main
java -javaagent:D:\V2024-11\116\MyAgent\target\MyAgent-1.0-SNAPSHOT-jar-with-dependencies.jar -cp . zero.overflow.Main








2、Agentmain使用

bash 复制代码
在JVM已经启动后,通过Attach API动态地附加到正在运行的JVM进程上。

添加依赖类pom.xml

bash 复制代码
<dependency>
    <groupId>com.sun</groupId>
    <artifactId>tools</artifactId>
    <version>1.8</version>
    <scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

改变PremainTest.java

bash 复制代码
public class AgentMainTest {
    public static void agentmain(String agentArgs, Instrumentation inst)
    {
inst.addTransformer(new MyTransformer(),true);
        for (Class<?> clazz : inst.getAllLoadedClasses()){
            if (clazz.getName().equals("zero.overflow.Fox")){
                try {
inst.retransformClasses(clazz);
                } catch (UnmodifiableClassException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}







动态注入:

bash 复制代码
public class Main {
    public static void main(String[] args) throws AgentLoadException, IOException, AgentInitializationException, AttachNotSupportedException {
        VirtualMachine attach = VirtualMachine.attach("37416");
attach.loadAgent("D:\\V2024-11\\116\\MyAgent\\target\\MyAgent-1.0-SNAPSHOT-jar-with-dependencies.jar");
    }
}




二、Agent内存马注入:

利用javassist注入Filter内存马

添加依赖类pom.xml

bash 复制代码
<dependency>
<groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.30.2-GA</version>
</dependency>








冰蝎内存马项目

只支持tomcathttps://github.com/rebeyond/memShell


相关推荐
0xDevNull2 分钟前
Spring Boot 自动装配:从原理到实践
java·spring boot·后端
qq_5895681044 分钟前
java学习笔记,包括idea快捷键
java·ide·intellij-idea
小怪吴吴2 小时前
idea 开发Android
android·java·intellij-idea
嘻嘻哈哈樱桃2 小时前
牛客经典101题题解集--动态规划
java·数据结构·python·算法·职场和发展·动态规划
gmaajt2 小时前
Golang怎么做国际化多语言_Golang i18n教程【核心】
jvm·数据库·python
一次旅行2 小时前
IDEA安装CC GUI新手指南
java·ide·intellij-idea
超梦dasgg2 小时前
Spring AI 智能航空助手项目实战
java·人工智能·后端·spring·ai编程
maqr_1102 小时前
CSS如何利用Sass定义全局阴影方案_通过变量实现统一CSS风格
jvm·数据库·python
m0_613856292 小时前
uni-app怎么做类似于美团的商家评价星级 uni-app五星评分组件制作【实战】
jvm·数据库·python
Cder3 小时前
用 React + Ink 在终端里「优雅搜索」:开源 CLI 设计与非交互模式实践
前端·agent