- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
下面的 JavaScript 是如何工作的?
我知道这是缩小代码。我试过对它进行一些去混淆处理,但我无法清楚地了解它是如何实现这种效果的。我可以看到它使用字符串进行某种迭代,使用 Date 对象,奇怪的字符串操作,数学函数,然后代码自行打印。
如何用最小的示例重写相同的效果?
eval(z='p="<"+"pre>"/* ,.oq#+ ,._, */;for(y in n="zw24l6k\
4e3t4jnt4qj24xh2 x/* =<,m#F^ A W###q. */42kty24wrt413n243n\
9h243pdxt41csb yz/* #K q##H######Am */43iyb6k43pk7243nm\
r24".split(4)){/* dP cpq#q##########b, */for(a in t=pars\
eInt(n[y],36)+/* p##@###YG=[#######y */(e=x=r=[]))for\
(r=!r,i=0;t[a/* d#qg `*PWo##q#######D */]>i;i+=.05)wi\
th(Math)x-= /* aem1k.com Q###KWR#### W[ */.05,0>cos(o=\
new Date/1e3/* .Q#########Md#.###OP A@ , */+x/PI)&&(e[~\
~(32*sin(o)*/* , (W#####Xx######.P^ T % */sin(.5+y/7))\
+60] =-~ r);/* #y `^TqW####P###BP */for(x=0;122>\
x;)p+=" *#"/* b. OQ####x#K */[e[x++]+e[x++\
]]||(S=("eval"/* l `X#####D , */+"(z=\'"+z.spl\
it(B = "\\\\")./* G####B" # */join(B+B).split\
(Q="\'").join(B+Q/* VQBP` */)+Q+")//m1k")[x/2\
+61*y-1]).fontcolor/* TP */(/\\w/.test(S)&&"#\
03B");document.body.innerHTML=p+=B+"\\n"}setTimeout(z)')//
最佳答案
前言:我在http://jsfiddle.net/WZXYr/2/对代码进行了广泛的美化和注释。
考虑最外层:
eval(z = '...');
代码字符串存储在变量z
中。赋值运算符返回分配的值,因此代码字符串也作为参数传递给 eval
。
代码字符串 z
在 eval
中运行。代码非常迟钝,即使清理后也是如此,但它似乎:
4
描述的 base-36 数字字符串。e
、x
和 y
来保存映射状态。 map 状态在某种程度上是挂钟当前秒数的函数(new Date/1e3
)。p
p += "*#"[index]
来决定是否使用空格、星号或井号,其中index
实际上是e[x++] + e[x++]
(如上所说,e
和x
负责 map 状态)"*#"
的长度,则有回退代码用 z
中的字符填充输出 p
>。内部字符由动画字符填充,而外部字符则从 z
中提取。在代码的末尾,调用了setTimeout(z)
,它异步计算代码字符串z
。重复调用 z
允许代码循环。
简单示例:
这是一个 super 简单的版本(http://jsfiddle.net/5QXn8/):
eval(z='p="<"+"pre>";for(i=0;i<172;++i)if(i > 62 && i < 67)p+="!---"[~~(new Date/1e2 + i)%4];else p += ("eval(z=\'" + z + "\')")[i];document.body.innerHTML = p;setTimeout(z)')
for
循环将每个字符添加到输出字符串 p
(该字符串的长度为 172 个字符):
for(i=0;i<172;++i)
内部条件决定我们是否在位置 62 到 67 之间的 Angular 色上,这些 Angular 色是动画 Angular 色:
if(i > 62 && i < 67)
如果是,则打印出 !---
,根据第二个挂钟值的十分之一移动。这提供了动画效果。
p+="!---"[~~(new Date/1e2 + i)%4]
(所有围绕 new Date
的脏东西实际上只是为了将日期值转换为 0 到 3 之间的数字。)
否则,如果我们不在动画 Angular 色上,则打印由
定义的字符串中的索引-i
字符 "eval(z='" + z + "')"
即eval('
and ')
包围的代码字符串z
。
最后,输出字符串并使用setTimeout
排队另一个z
的执行:
document.body.innerHTML = p;setTimeout(z)
请注意,我的最终输出不是完全正确的——我没有考虑最后的反斜杠——但它仍然应该让你很好地了解该技术是如何工作的一般。
关于javascript - 这个混淆的 JavaScript 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834309/
我真的很困惑。我已经尝试使用带有 tomcat 的 Jax-rs 并使用所有注释,我能够使用 url 调用我的服务。因此,如果没有 Jax-rs,我可以简单地拥有一个 servlet 并调用我的服务。
是否有任何工具/商业混淆器可以混淆 WPF 控件中的 BAML 资源? 如果没有,就 IP 保护而言,这是一段艰难的时期,因为黑客可以通过使用 BAML 到 XAML 转换器轻松查看 BAML 资源。
嘿大家。我在尝试使用 COBOL 在 zOS 环境中解决的编码项目中遇到了一些麻烦。我需要读入一个文件并将它们放入索引表中(我知道将少于 90 条记录)。 让我感到困扰的是,我们受到项目参数的约束,以
我试图按照这个例子来理解 join() 方法: class PrintDemo { public void printCount() { try { for(int
当我编译我正在编写的代码,然后在 JD Gui 中查看时,方法显示带有如下标题: public void growSurface(Random paramRandom, int paramInt1,
我正在为重新分发准备 Android 库,它的代码必须进行混淆处理。我已经阅读了有关此主题的一些内容,并且决定使用 Android Library Project。它将作为 jar 分发(自动在/bi
两个混淆相关的问题: 1) 是否有任何工具可以将 F# 从 MSIL 目标形式反汇编回其源形式或接近它的形式?这不是通过默默无闻来实现安全性的尝试,但我想保护某些源代码免遭“盗窃”。 2) 我简要地查
谁能向我解释为什么 simulatedCase <- rbinom(100,1,0.5) simDf <- data.frame(CASE = simulatedCase) posterior_m0
我一直无法找到关于使用 AppDomains 时发生的事情的非常清楚的描述,所以希望有人能够启发我。我有一个简单的测试程序(基本上是扯掉了 MSDN example ): using System;
假设我有 2 个分支topic和 master如果我在 topic分支,然后运行 git rebase master它是 rebase master 还是 rebase 主题分支? 做 git r
我有一个类(class): public class LockTest { public void LockThis() { lock (this)
我正在尝试最小化/混淆我的 Angular 代码,但遇到了问题。我在这里阅读“缩小说明”http://docs.angularjs.org/tutorial/step_05但我定义我的 Control
我遇到了一些困惑的操作。 var a = 0.1; var b = 0.2; var c = 0.3; console.log(a); // 0.1 console.log(b); // 0.2 co
感谢您查看我的帖子 - 我正在尝试弄清楚如何在单击链接时关闭此下拉菜单,但我的 JavaScript 技能非常缺乏,而且代码似乎很困惑。这是 HTML:
混淆、哈希和加密之间有什么区别? 这是我的理解: 哈希是一种单向算法;无法逆转 混淆与加密类似,但不需要任何“ secret ”即可理解(ROT13 就是一个例子) 加密是可逆的,但需要“ secre
我有以下代码 my $content = $response->content; $content =~ /username=([\s\S]+?)&/; my $username = $1; prin
我在 .NET 中发现了一些与我预期的有点不同的东西。我粘贴的代码没有意义,但它是我拥有的一个复杂得多的函数的浓缩版。我实际上是在获取匿名类型信息作为参数(尚未创建匿名类型的实例),我需要创建该类型的
我正在努力解决 JavaFX 应用程序的混淆问题。使用此项目作为基础: https://github.com/openjfx/samples/tree/master/IDE/IntelliJ/Non-
是否可以制作一个与此类似的 CSV 阅读器 while((line = reader.readLine()) != null){ String[] values = line.
公共(public)类测试2 { 公共(public)静态无效主(字符串[]参数){ System.out.println("3 + 6"); System.out.println(3
我是一名优秀的程序员,十分优秀!