首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下为防止字节码被直接反编译而进行的字节码修改吗?

有人能解释一下为防止字节码被直接反编译而进行的字节码修改吗?
EN

Stack Overflow用户
提问于 2012-02-29 07:00:34
回答 3查看 277关注 0票数 0

谁能给我解释一下,为了防止它被反编译成有效的java源代码,对以下字节码进行了哪些字节码修改?

代码语言:javascript
复制
0: aload_0
1: invokevirtual 102    java/lang/String:toCharArray    ()[C
4: dup
5: arraylength
6: iconst_2
7: if_icmpge +12 -> 19
10: dup
11: iconst_0
12: dup2
13: caload
14: bipush 33
16: ixor
17: i2c
18: castore
19: areturn

此字节码已从使用zkm混淆的类中删除。

EN

回答 3

Stack Overflow用户

发布于 2012-02-29 07:09:15

看起来原始代码是这样的:

代码语言:javascript
复制
char[] mystery_method(String s) {
   char[] r = s.toCharArray();
   if (r.length < 2) {
       r[0] ^= 33;
   }
   return r;
}

我看不出这个字节码有什么特别棘手的地方,这会给反编译器带来麻烦。

票数 3
EN

Stack Overflow用户

发布于 2012-02-29 07:03:02

这看起来很容易被反编译。所能做的就是混淆字节码,使decompile...which变得更难,只有在比代码看起来更复杂的代码上才能真正工作。

实际上,只需看几分钟,就可以手工反编译……

票数 0
EN

Stack Overflow用户

发布于 2012-02-29 07:16:19

大多数情况下,优化阶段会阻止您正确地反编译整个.class文件。嗯,至少让它变得更复杂了,因为合并了相似的代码路径。你可能会得到一堆(伪)goto,这在java中是用不到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9491145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档