我发现以下打印的奇怪Java代码只是另一个Java黑客在您的终端上。
显然,这段代码看起来很混乱。 即使您将此代码复制到自己喜欢的IDE中,IDE也无法弄清楚该代码的语法。 相信我,这段代码可以工作,这就是它的工作方式。
显然,它具有main方法的类名。 让我们清除代码并将其格式化。 现在看起来像这样。
class Sig{
public static void main(String...args){
\u0066or(int\u0020$:"vÌÈÊ\"¤¾Àʲ¬Æ\"v¤Î¤\"²¤¨¸¬Æ".to\u0043h\u0061rArray()
)System./*goto/*$/%\u0126//^\u002A\u002Fout.print((char)(($>>
+(~'"'&'#'))+('<'>>('\\'/'.')/\u002Array.const(~1)\*\u002F)));
}
}
现在您可以看到此代码中包含一些unicode字符。 接下来,我们将提取所有unicode字符。 我也要删除/ * goto / * $ /%\ u0126 // ^ \ u002A \ u002F和\ u002Array.const(〜1)\ * \ u002F因为这些代码段只是用unicode字符编写的注释行。
class Sig{
public static void main(String...args){
for(int $:"vÌÈÊ\"¤¾Àʲ¬Æ\"v¤Î¤\"²¤¨¸¬Æ".toCharArray())
System.out.print((char)(($>>+(~'"'&'#'))+('<'>>('\\'/'.'))));
}
}
如果您更换(char)(($>>+(~'"'&'#'))+('<'>>('\\'/'.')))带有相关ascii值的表达式,那么它就像(char)(($>>+(~42&35))+(60>>(92/46)))。 这相当于(字符)(c / 2 + 15)。 简化代码的最终输出如下所示。
class Sig{
public static void main(String...args){
for(int $:"vÌÈÊ\"¤¾Àʲ¬Æ\"v¤Î¤\"²¤¨¸¬Æ".toCharArray())
System.out.print((char)($ / 2 + 15));
}
}
现在,这个谜团已经解决。 对于循环,请从字符串中提取每个字符,然后根据公式更改其值并打印出来。
您为什么不尝试用自己喜欢的语言编写这样的代码并将其注释掉?
警告:切勿在生产资料库中编写此类代码。