《re:从零开始的java逆向基础》#7反编译、混淆、字节码修改器
本帖最后由 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=5bytecode=1FFR和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/obfuscatorRadon(开源)有GUI下载地址https://github.com/ItzSomebody/Radon
先以superblaubeere27的obfuscator为例
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);
}
}
}
混淆后
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])
float lllllllIlIllIII = HelloWorld.lllI;
while (llIll((int)lllllllIlIllIII, HelloWorld.lllI)) {
// 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文档
**** Hidden Message *****
感谢分享!!!!!!!!!! {:5_123:}像大佬看齐 学习了非常感谢 感谢分享好文 向大佬看齐!!
浅色大佬牛啊 你将受到所有人的崇拜! 收藏一下,慢慢研究,多谢分享 谢谢楼主分享