首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是如何有效的Java代码?(混淆Java)

这是如何有效的Java代码?(混淆Java)
EN

Stack Overflow用户
提问于 2016-04-24 14:29:52
回答 3查看 1K关注 0票数 7

这段代码看上去显然不正确,但它很高兴地在我的机器上编译和运行。有人能解释一下这是怎么回事吗?例如,是什么使类名后面的")“有效?那些随处可见的词呢?

代码语言:javascript
复制
class M‮{public static void main(String[]a‭){System.out.print(new char[]{'H','e','l','l','o',' ','W','o','r','l','d','!'});}}

在线测试:https://ideone.com/t1W5Vm

来源:https://codegolf.stackexchange.com/a/60561

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-24 14:46:53

破译正在发生的事情的一种方法是逐字符地查看程序(演示)。

在这里,您可能会发现,位置742中的字符是特殊的UNICODE字符RLO (从右到左顺序)和LRO (从左到右顺序)字符。

一旦删除了它们,程序就开始看起来很正常:

代码语言:javascript
复制
class M{public static void main(String[]a){System.out.print(new char[]{'H','e','l','l','o',' ','W','o','r','l','d','!'});}}

混淆程序编译的诀窍是Java编译器忽略这些特殊字符作为格式字符。

票数 9
EN

Stack Overflow用户

发布于 2016-04-24 14:44:13

这是有效的java代码,但它使用阿拉伯语“对齐”不可见的零宽度字节码字符。尝试将光标放置在文本中,然后按右箭头。在"M“和")”之间有一个"char[]“和"a[]”。

我试图格式化代码,但在代码中导航是令人沮丧的。

票数 1
EN

Stack Overflow用户

发布于 2016-04-24 14:47:17

您将在源中找到两个unicode序列。

0xE2 0x800xAE http://www.fileformat.info/info/unicode/char/202e/index.htm

0xE2 0x800xAD http://www.fileformat.info/info/unicode/char/202d/index.htm

有效地编写部分:{public static void main(String[]a从右到左

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

https://stackoverflow.com/questions/36824416

复制
相关文章

相似问题

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