自己写个 Java 混淆器 GarlicKing
GarlicKing 是个手写的 Java 混淆器, 纯 Java, Maven 管依赖, 在字节码层动手: 读进编好的 class, 改字节码, 再写回去, 保证照常跑, 只把反编译出来的可读性搞烂。名字取自吃生蒜肠胃犯迷糊, 想让反编译的人也是这观感。
现成混淆器一堆, 但混淆这东西不亲手撸一遍, 永远是会用不是懂。平时做逆向扒 dex/class, 干的就是把别人混过的字节码还原成人话; 反过来站到出题人这边, 才看得清一段正常 class 被动了哪些手脚才变得让人头疼。
真正费时间的不是改, 是改完还得能跑。字节码不像源码, 动一个地方, 栈帧、局部变量表、跳转偏移全得跟着对, 错一点 JVM 直接甩你 VerifyError。所以精力全耗在验证上, 改一版跑一版, 反编译回来看是不是真糊了, 顺带确认功能没崩。拆得多才知道哪里最恶心, 写这种东西反而顺手。
就一个小工具, star 是我自己点的, 仓库现在也归档了, 没打算跟商业混淆器比, 是 2024 年底折腾字节码留下的手记。但对我值, 写完再去逆别人的东西, 看套路的眼神都不一样, 那些坑我自己也埋过一遍。