魔改哥斯拉反编译重打包后,如何打乱特征指纹实现Webshell免杀对抗?
摘要:🦖 魔改哥斯拉 | 反编译重打包 + 特征指纹打乱 + Webshell免杀对抗 本文记录对哥斯拉(Godzilla)v4.01 进行魔改的完整过程,涵盖 JAR 反编译环
🦖 魔改哥斯拉 | 反编译重打包 + 特征指纹打乱 + Webshell免杀对抗
本文记录对哥斯拉(Godzilla)v4.01 进行魔改的完整过程,涵盖 JAR 反编译环境搭建、特征指纹修改、Webshell 免杀对抗等内容。
免责声明:本文仅用于学习研究,请勿用于非法用途。
📌 目录
环境准备
JAR 反编译与项目搭建
打乱特征指纹
Webshell 免杀对抗
利用文件包含绕过 D 盾
替换生成模板实现生成即免杀
使用现成免杀工具适配哥斯拉
总结
🛠️ 环境准备
主要用到以下工具:
jadx:JAR 反编译工具,用于提取源码
decompiler.com:在线反编译工具(备用)
IDEA:Java 开发环境,用于修改和重新打包
JDK 1.8:哥斯拉是基于 JDK 8 编写的,版本要对应,用高版本会有一堆兼容性问题
🔧 JAR 反编译与项目搭建
反编译
用 jadx 打开 godzilla.jar,或者上传到 decompiler.com 进行反编译:
decompiler.com 有时候会出问题,建议两个工具都备着
另一款在线反编译工具:https://www.decompiler.com/(这个工具导出的项目中文会被 Unicode 编码,属于正常现象,不影响使用)
配置 IDEA 项目
选 JDK 1.8,版本不对会报一堆奇怪的错误:
添加原版哥斯拉 JAR 包为依赖,这样第三方库的类都从原版 JAR 里读取,不需要单独解决依赖问题:
📁 目录结构说明
这里的目录结构设计很关键,理解清楚能省很多麻烦
项目根目录/
├── godzilla/ # 反编译的完整源代码(只用来复制文件,不参与构建)
├── lib/ # 原版 jar 包,作为依赖引入
└── src/ # 自己修改的源码目录(核心!参与构建)
注意 src 目录里的文件必须保持和原代码一样的目录结构,比如要改 core/ApplicationConfig.java,就在 src 里建 core/ 目录再放进去。
只保留一个 src 目录参与构建,这样只有你改过的文件会被重新编译,其他的都走原版 JAR:
配置主类入口
找到 godzilla/META-INF/MANIFEST.MF,里面写明了程序的主类:
在 IDEA 的工件配置里填入对应的主类:
构建打包
先点击构建项目:
再点击构建工件重新打包:
看到生成了新的 JAR 文件:
直接运行会提示 hash 校验错误,这是正常的,因为代码被我们重新编译了,hash 值当然变了:
✅ 能弹出提示说明程序能运行,环境搭建成功!接下来开始改代码
🎯 打乱特征指纹
1️⃣ 去除 Hash 校验
全局搜索关键词,找到 godzilla/core/ApplicationConfig.java:
把校验逻辑改掉,有两种方式:
// 方法一:去掉取反,让校验永远通过
if (jarHashString.equals(hashString)) // 原来是 !equals
// 方法二:直接把校验代码全删了,只保留正常逻辑
⚠️ 修改的文件要复制一份到 src 目录里,并且保持目录结构不变,否则改动不生效
如果 src 里复制了太多文件导致构建报错,把不需要的文件删掉就行
如果碰到找不到某个包的问题,自己去网上下载对应的 JAR 放到 lib 目录下,再加入依赖就好了:
2️⃣ 修改流量特征(UA/Headers)
先用 Burp 抓一下原版的数据包看看长什么样:
原版数据包:
POST /shell.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Host: 127.0.0.1
Content-type: application/x-www-form-urlencoded
这个 UA 是哥斯拉的默认特征,流量设备一眼就能识别。
