我想弄清楚这个页面marmiton的工作原理。最值得注意的是,以下javascript如何生成< a>出现在页面末尾的元素:
<div class="lienPlusCom">[ <script language="JavaScript">jsdchtml3('aºerh "=fecer¦ttr¦settecea-e_sivocikoap-se-sidroiana-serxupep--seti-edcohclo-tais-teored-pac-lemar1_1896psa.3 "x"=ditc00lMhpc_ianoCnnetC_m_trtceRlFettehcisiDelp_yamtH_mAlohcnoVruoTriLsoCsetnemmria "selcssaeil"=PnCsul"mosulP¹d oc etnemmria¦ºse¹a');</script> ]</div>
但我的javascript调试技巧相当有限。是否有人可以建议在浏览器“解混”后如何逐步完成此代码?我目前正在使用firefox和firebug进行大部分调试,但如果需要,我可以切换到另一个工具。
答案 0 :(得分:2)
放
debugger;
您希望脚本停在哪里。然后你可以查看所有这些变量和元素以及所有类型的东西,看看问题出在哪里。
答案 1 :(得分:2)
JavaScript在这个长字符串上调用了一个名为jsdchtml3()
的函数:
'aºerh "=fecer¦ttr¦settecea-e_sivocikoap-se-sidroiana-serxupep--seti-edcohclo-tais-teored-pac-lemar1_1896psa.3 "x"=ditc00lMhpc_ianoCnnetC_m_trtceRlFettehcisiDelp_yamtH_mAlohcnoVruoTriLsoCsetnemmria "selcssaeil"=PnCsul"mosulP¹d oc etnemmria¦ºse¹a'
我们可以稍微去混淆jsdchtml3()
:
jsdchtml3=function(s) {
if (!jsdchtml3.p) {
String.prototype.afca=String.prototype['ch'+'ar'+'At'];
jsdchtml3.k='243524534235';
jsdchtml3.ra=Array('º<','¹>','¦/');
jsdchtml3.u=function(s) {
if (!jsdchtml3.u.r) {
jsdchtml3.u.r=Array();
for (var i=0,a;i<jsdchtml3.ra.length;i++) {
a=jsdchtml3.ra[i].split('');
jsdchtml3.u.r[i]=Array(new RegExp(a[0],'gi'),a[1]);
}
}
for (var i=0;i<jsdchtml3.u.r.length;i++)
s=s.replace(jsdchtml3.u.r[i][0],jsdchtml3.u.r[i][1]);
return s;
};
jsdchtml3.r=function(a,b,c) {
for (var j=c-1,o='';j>=0;j--)
o+=a.afca(b+j);
return o;
};
jsdchtml3.p=function(f,a) {
var t=jsdchtml3.u(f),i=0,p=0,n,o='';
while(p<t.length) {
n=parseInt(a.afca(i++ % a.length));
o+=jsdchtml3.r(t,p,n);
p+=n;
}
return o;
};
}
document.write(jsdchtml3.p(s,jsdchtml3.k));
};
这将document.write
jsdchtml3.p(s,jsdchtml3.k)
,其中s
是长字符串。按照这个控制流程执行功能......这有点令人困惑!