15
回答
Javascript果然深不可测,你看得懂这段代码吗?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
(function (F, i, r, e, b, u, g, L, I, T, E) {
		if (F.getElementById(b))
			return;
		E = F[i + 'NS'] && F.documentElement.namespaceURI;
		E = E ? F[i + 'NS'](E, 'script') : F[i]('script');
		E[r]('id', b);
		E[r]('src', I + g + T);
		E[r](b, u);
		(F[e]('head')[0] || F[e]('body')[0]).appendChild(E);
		E = new % 20Image;
		E[r]('src', I + L);
	})
(document, 'createElement', 'setAttribute', 'getElementsByTagName', 'FirebugLite', '4', 'firebug-lite.js', 'releases/lite/latest/skin/xp/sprite.png', 'https://getfirebug.com/', '#startOpened');
举报
bobshi
发帖于6年前 15回/1K+阅
共有15个评论 最后回答: 5年前

从形式上看就是1楼说的。把最后括号里的参数代入就很容易看懂了。

不过就是在head或body里动态添加一个脚本。

添加的脚本如下。

<script id="FirebugLite" src="https://getfirebug.com/firebug-lite.js#startOpened" firebuglite="4"></script>

但要指出一处错误

E = new % 20Image;

应该是

E = new Image;

效果就是页面底下出现firebug的调试控制台。

  真不舒服,  (F, i, r, e, b, u, g, L, I, T, E) 这个传参数这命名玩的,把名字替换一下,也就不是很深奥了!
嗯,都是高手啊,就属xyz555说的最详细了,其实这段代码就是firebuglite的书签里的url去掉前面的javascript:,哈哈~我当时就是很好奇,就加个书签就可以在任何你打开的页面注入js代码然后调用了,真是强大,然后看了一下这个书签的的内容,结果发现代码有点儿绕有点儿难懂,勉强看得明白,但发现如果是自己,肯定不会想到这么用,这就是差距啊...
--- 共有 1 条评论 ---
答复哈系统学习一下也就不难了~ 6年前 回复

很正常, JS做BASE64,DES加密,MD5摘要, ZIP压缩/解压缩等算法, 早就有人实现了, 你这个只是简单的函数调用, 牵涉原型链的才深奥. 看看下面这个.运行后弹出代码你能看懂吗?

 

eval(function(p,a,c,k,e,r){var b,e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--)a[c]=(r[b=e(c)]=k[c])?b:'\\x0';e=function(){return a.join('|')||'^'};k=[function(e){return r[e]}];c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b('+e(c)+')\\b','g'),k[c]);return p}('alert(0(){2 f=0(o){for(2 m in o){8[m]=o[m]}};2 g=Object.3.1;4 0(a,b,c){9(typeof b==\'object\'){c=b;b=a;a=c.1!=g?c.1:0(){b.apply(8,arguments)}}2 6=0(){},d,e=b.3;6.3=e;d=a.3=new 6();d.1=a;a.h=e;9(e.1==g){e.1=b}a.5=0(o){7.5(a,o)};d.h=d.supr=(0(){4 e});d.5=f;7.5(a,c);a.i=0(o){4 7.i(a,o)};4 a}});',[],31,'function|constructor|var|prototype|return|override|F|Ext|this|if||||||||superclass|extend'.split('|'),0,{}));

写代码不该这样的,参数命名应该明了,让人一看就知道是什么,用来干什么。而不是用来玩猜谜游戏的,若在项目里这样写代码,是会被人砍死的,这样写代码只能说很业余。若代码经过压缩处理,那另当别论
顶部