本帖最后由 Lightcolour 于 2019-9-27 11:42 编辑
jd-gui java反编译器 有gui界面 时间太久作者以及弃坑了 下载地址http://java-decompiler.github.io/ CFR 没有GUI 很常用的反编译大多数字节码修改器用 下载地址http://www.benf.org/other/cfr/ Fernflower (FFR)没有GUI 和CFR一样常用 下载地址https://the.bytecode=1.club/showthread.php?tid=5 bytecode=1 FFR和CFR的gui FFR的作者 下载地址https://github.com/Konloch/bytecode=1-viewer/releases
先展示一下反编译用jd-gui为例
由于年代久远只能只能反编译java7及以下 比如java8的 ->() 不能进行反编译
Java这么轻易的就被反编译了那么有没有保护的方法? 当然有了就是 混淆
商业及的混淆有 Zelix KlassMaster (ZKM)有GUI 不过是收费的 下载地址http://www.zelix.com/klassmaster/features.html 只不过要有企业邮箱才能试用(不是免费邮箱就行一个域名才几块钱一年)
那么免费的混淆有没有呢当然是有的了能力也不赖
superblaubeere27 的obfuscator (开源)有GUI 可以写混淆js脚本 下载地址 https://github.com/superblaubeere27/obfuscator Radon(开源)有GUI 下载地址https://github.com/ItzSomebody/Radon
先以superblaubeere27的obfuscator为例
[Java] 纯文本查看 复制代码 public class HelloWorld {
publicHelloWorld() {
super();
}
public staticvoid main(final String[] args) {
System.out.println("Hello World");
for (int i= 0; i < 10; ++i) {
System.out.println(i);
}
}
}
混淆后
[Java] 纯文本查看 复制代码 public class HelloWorld {
public static void main(final String[] array) {
// invokedynamic(1:(Ljava/io/PrintStream;Ljava/lang/String;)V, invokedynamic(0:()Ljava/io/PrintStream;), HelloWorld.llII[HelloWorld.lllI[0]])
float lllllllIlIllIII = HelloWorld.lllI[0];
while (llIll((int)lllllllIlIllIII, HelloWorld.lllI[1])) {
// invokedynamic(2:(Ljava/io/PrintStream;I)V, invokedynamic(0:()Ljava/io/PrintStream;), lllllllIlIllIII)
++lllllllIlIllIII;
"".length();
if (" ".length() == (" ".length() << (" ".length() << " ".length()) & ~(" ".length() << (" ".length() << " ".length())))) {
throw null;
}
}
}
}
更全的混淆https://pastebin.com/RFHtgPtX
再看看字节码修改器 JByteMod (开源)支持官方中文 有GUI 使用最多的字节码修改器 下载地址https://grax.info/ Recaf(开源)支持官方中文 有GUI 支持文字汇编有官方文档 下载地址https://col-e.github.io/Recaf
以Recaf为例
本集资源word文档
|