JavaScript代码解密

NewUserFF 2011-05-06 11:36:07
eval(function(p, a, c, k, e, r) {
e = function(c) {
return c.toString(36)
};
if ('0'.replace(0, e) == 0) {
while (c--) r[e(c)] = k[c];
k = [function(e) {
return r[e] || e
}];
e = function() {
return '[1-9a-fhj-ru-y]'
};
c = 1
};
while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
return p
} ('2 $(7){a 4.getElementById(7)}2 checkAll(o,c,5){3 1;1=f(c,5);h(3 i=0;i<1.d;i++){1[i].b=o}}2 checkOthers(c,5){3 1;1=f(c,5);h(3 i=0;i<1.d;i++){6(1[i].b==p){1[i].b=q}r 6(1[i].b==q){1[i].b=p}}}2 textareasize(8){6(8.u>70){8.j.height=8.u+\'px\'}}2 set(8,v){8.innerHTML=v}2 view(7){$(7).j.w=\'inline\'}2 hide(7){$(7).j.w=\'none\'}2 getScroll(){3 t;6(4.k&&4.k.l){t=4.k.l}r 6(4.x){t=4.x.l}a(t)}2 HtmlEncode(m){3 s="";6(m.d==0)a"";s=m.9(/&/g,"&");s=s.9(/</g,"<");s=s.9(/>/g,">");s=s.9(/ /g," ");s=s.9(/\\\'/g,"'");s=s.9(/\\"/g,""");a s}2 f(y,5){3 n=new Array();3 e=4.getElementsByTagName(y);h(3 i=0;i<e.d;i++){6(e[i].5==5)n.push(e[i])}a n}', [], 35, '|checkboxArray|function|var|document|name|if|id|obj|replace|return|checked|tagname|length|el|getElementsByName||for||style|documentElement|scrollTop|str|rtArr|bool|false|true|else|||scrollHeight|value|display|body|tag'.split('|'), 0, {}))

这段代码貌似加密了,不过我从语法上分析好像就有点不对,这段代码拆分的话,结构大体是这样的:

eval(function(p, a, c, k, e, r) {............................}(........乱七八遭的东东..............))

function函数定义完了后面又加括号写了一些东西,那是什么意思?语法上可以在函数定以后加括号写一堆别的东西吗?
另外,最重要的是,请问这段代码怎么解密啊?它运用的是什么加密方法,怎么从来没见过,这么乱?
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewUserFF 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 theforever 的回复:]
1.function函数定义完了后面又加括号写了一些东西,那是什么意思?
括号里面内容作为传参,直接调用执行所定义的函数了。
[/Quote]
还是不太懂,这段function的参数不就是p,a,c,k,e,r吗?括号里面的东西传递的是什么参数?
NewUserFF 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 catchnull 的回复:]

这个是匿名函数
[/Quote]
十分感谢!
CatchNull 2011-05-07
  • 打赏
  • 举报
回复
这个是匿名函数
  • 打赏
  • 举报
回复
1.function函数定义完了后面又加括号写了一些东西,那是什么意思?
括号里面内容作为传参,直接调用执行所定义的函数了。

2.如何解密
搜索“return p”,替换为"alert(p)"
gogotor 2011-05-06
  • 打赏
  • 举报
回复
这么简单的函数还加密,都是网页制作最基本的一些函数,估计是为了js减小体积
gogotor 2011-05-06
  • 打赏
  • 举报
回复
eval加密,很好破解,网上有很多

自己写个js
<script>alert(把eval里的复制过来)</script>
运行后就可看到结果,FF浏览器下可以复制


把结果给你

function $(id) {
return document.getElementById(id)
}
function checkAll(bool, tagname, name) {
var checkboxArray;
checkboxArray = getElementsByName(tagname, name);
for (var i = 0; i < checkboxArray.length; i++) {
checkboxArray[i].checked = bool
}
}
function checkOthers(tagname, name) {
var checkboxArray;
checkboxArray = getElementsByName(tagname, name);
for (var i = 0; i < checkboxArray.length; i++) {
if (checkboxArray[i].checked == false) {
checkboxArray[i].checked = true
} else if (checkboxArray[i].checked == true) {
checkboxArray[i].checked = false
}
}
}
function textareasize(obj) {
if (obj.scrollHeight > 70) {
obj.style.height = obj.scrollHeight + 'px'
}
}
function set(obj, value) {
obj.innerHTML = value
}
function view(id) {
$(id).style.display = 'inline'
}
function hide(id) {
$(id).style.display = 'none'
}
function getScroll() {
var t;
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop
} else if (document.body) {
t = document.body.scrollTop
}
return (t)
}
function HtmlEncode(str) {
var s = "";
if (str.length == 0) return "";
s = str.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, """);
return s
}
function getElementsByName(tag, name) {
var rtArr = new Array();
var el = document.getElementsByTagName(tag);
for (var i = 0; i < el.length; i++) {
if (el[i].name == name) rtArr.push(el[i])
}
return rtArr
}
c_perl 2011-05-06
  • 打赏
  • 举报
回复
这类型的代码我以前也研究过,网上查不到相关资料,这可能是用工具生成的代码,有兄弟了解这种代码的话详细讲讲

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧