1

このページのマーミトンがどのように機能するかを理解しようとしています。最も注目すべきは、次の 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 デバッグ スキルはかなり限られています。ブラウザによって「難読化解除」されたら、このコードをステップ実行する方法を提案できる人はいますか? 私は現在、ほとんどのデバッグでfirebugを備えたfirefoxを使用していますが、必要に応じて別のツールに切り替えることもできます.

4

2 に答える 2

2

jsdchtml3()その JavaScript は、この長い文字列で呼び出される関数を呼び出します。

'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

于 2012-05-07T07:19:50.770 に答える