工具介绍
Java 内存马查杀工具,基于 Agent + Instrumentation + ASM 的 Java 进程内存马检测与清除工具(含 GUI)
本项目是一款用于检测与清除 Java 进程中内存马的工具。工具设计为三部分:
- GUI 管理端(JFormDesigner):提供可视化操作界面,用于目标进程选择、会话管理、实时日志查看与分发、审计与导出。
- Agent(注入模块):运行在目标 JVM 内部,基于 Instrumentation获取字节码、保存原始字节码、使用 ASM 分析字节码以判定可疑/恶意模块,并在确认后通过 redefineClasses + 反射手段执行清除。
- 部分工具类:如socket服务端,JVM列表处理类等
GUI 与 Agent 通过 socket 连接通信:日志集中展示并按内存马类型分发到对应日志面板,便于定位与审计。
socket分别监听本地8899端口和9900端口。
核心功能
-
注入与会话管理
- 使用 Attach API 将 Agent 加载到目标 JVM,并建立 socket 会话。
- 支持通过 PID 列表选择或手动指定目标进程。
-
字节码抓取与保存
- 在目标进程内抓取内存马字节码。
- 将抓取到的字节码持久化到磁盘(按包/类名组织),便于使用 JADX /IDEA 等工具反编译。
-
字节码分析(ASM)
- 解析方法调用、反射使用、动态类生成、独立 ClassLoader 等可疑特征。
- 根据规则/签名对可疑模块进行分类(例如:动态加载并执行字节数组的模块、持有网络回连逻辑的模块、注入到关键框架的 hook 等)。
-
清除逻辑
- 对确认的内存马使用 Instrumentation.redefineClasses()将恶意类替换为安全/空实现。
- 通过反射断开入口(清理静态字段、移除 hook、停止相关线程、关闭网络连接等)。
- 清除操作在进程内执行并记录完整操作日志以备审计。
-
日志与告警
- 所有检测与清除操作实时回传 GUI 并按模块分发到相应日志面板。
- 支持标记高危事件为告警并导出审计报告。
工具使用
将Kill_Memshell.jar文件将MemShellScannerAgent-1.0-SNAPSHOT.jar文件放到同一目录下
java -jar MemShellScannerAgent-1.0-SNAPSHOT.jar
扫描与清除
- 启动 GUI 点击获取当前进程,可得到当前运行的JVM进程列表。
- 选择进程点击attach则可注入进程,下方的日志界面会输出检测进程和结果。在中间的内存马分类板块会输出各内存马相关信息。
- 在内存马板块获取到内存马类名后可在右侧板块按照格式[filter/servlet/listener…]classname 输入,点击清除内存马,即可移除进程中内存马。
- 导出的内存马字节码保存在当前根目录下的dumpClassFile文件夹中
日志与导出
- 支持导出抓取到的字节码(打包为 zip)以便离线反编译分析。
- 支持将检测报告导出为 JSON 或 HTML 以便存档与审计。
工具下载
https://github.com/CafeD1/Kill_Memshell