簡體   English   中英

將輸出打印到Chrome控制台

[英]Printing output to chrome console

假設我有以下javascript代碼:

<script type="text/javascript">
var x="function f(x){var i,o=\"\",l=x.length;for(i=0;i<l;i+=2) {if(i+1<l)o+=" +
"x.charAt(i+1);try{o+=x.charAt(i);}catch(e){}}return o;}f(\"ufcnitnof x({)av" +
" r,i=o\\\"\\\"o,=l.xelgnhtl,o=;lhwli(e.xhcraoCedtAl(1/)3=!84{)rt{y+xx=l;=+;" +
"lc}tahce({)}}of(r=i-l;1>i0=i;--{)+ox=c.ahAr(t)i};erutnro s.buts(r,0lo;)f}\\" +
"\"(0),4\\\"\\\\01\\\\0t\\\\\\\\\\\\03\\\\06\\\\03\\\\\\\\24\\\\03\\\\01\\\\" +
"\\\\4U03\\\\\\\\16\\\\0\\\\\\\\\\\\\\\\_\\\\0L00\\\\\\\\EY^MG[UWAWOJRD^ozrs" +
"u:'4K)I~vye.{P/ef&jospcmqsq14\\\\00\\\\03\\\\\\\\25\\\\06\\\\02\\\\\\\\37\\" +
"\\03\\\\01\\\\\\\\10\\\\07\\\\32\\\\05\\\\02\\\\\\\\37\\\\06\\\\00\\\\\\\\4" +
"W00\\\\\\\\35\\\\03\\\\01\\\\\\\\14\\\\02\\\\00\\\\\\\\14\\\\0}\\\\01\\\\0f" +
"\\\\2?;'.qiq)a&)V5LO27\\\\0C\\\\V[\\\\\\\\\\\\\\\\NZMD\\\"\\\\f(;} ornture;" +
"}))++(y)^(iAtdeCoarchx.e(odrChamCro.fngriSt+=;o27=1y%+;y+0)<4(iif){++;i<l;i" +
"=0(ior;fthnglex.l=\\\\,\\\\\\\"=\\\",o iar{vy)x,f(n ioctun\\\"f)\")"         ;
while(x=eval(x));
</script>

當我運行此腳本時,在chrome屏幕上會得到一個輸出(電子郵件地址),這很簡單。 我想在chrome的控制台中獲得相同的輸出。

例如,我使用console.log("test"); 在控制台上鍵入測試。 好吧,是否可以使用javascript將輸出(電子郵件地址)輸入到chrome控制台?

該代碼使用基於字符串的連續求值(使用eval)的混淆方案。 這可能是某種標准技術,但我並不熟悉。

最初,代碼將變量x的值設置為字符串:

var x = "function f(x){var i,o=\"\",l=x.length;for(i=0;i<l;i+=2) {if(i+1<l)o+=" +
    "x.charAt(i+1);try{o+=x.charAt(i);}catch(e){}}return o;}f(\"ufcnitnof x({)av" +
    " r,i=o\\\"\\\"o,=l.xelgnhtl,o=;lhwli(e.xhcraoCedtAl(1/)3=!84{)rt{y+xx=l;=+;" +
    "lc}tahce({)}}of(r=i-l;1>i0=i;--{)+ox=c.ahAr(t)i};erutnro s.buts(r,0lo;)f}\\" +
    "\"(0),4\\\"\\\\01\\\\0t\\\\\\\\\\\\03\\\\06\\\\03\\\\\\\\24\\\\03\\\\01\\\\" +
    "\\\\4U03\\\\\\\\16\\\\0\\\\\\\\\\\\\\\\_\\\\0L00\\\\\\\\EY^MG[UWAWOJRD^ozrs" +
    "u:'4K)I~vye.{P/ef&jospcmqsq14\\\\00\\\\03\\\\\\\\25\\\\06\\\\02\\\\\\\\37\\" +
    "\\03\\\\01\\\\\\\\10\\\\07\\\\32\\\\05\\\\02\\\\\\\\37\\\\06\\\\00\\\\\\\\4" +
    "W00\\\\\\\\35\\\\03\\\\01\\\\\\\\14\\\\02\\\\00\\\\\\\\14\\\\0}\\\\01\\\\0f" +
    "\\\\2?;'.qiq)a&)V5LO27\\\\0C\\\\V[\\\\\\\\\\\\\\\\NZMD\\\"\\\\f(;} ornture;" +
    "}))++(y)^(iAtdeCoarchx.e(odrChamCro.fngriSt+=;o27=1y%+;y+0)<4(iif){++;i<l;i" +
    "=0(ior;fthnglex.l=\\\\,\\\\\\\"=\\\",o iar{vy)x,f(n ioctun\\\"f)\")";

然后,它計算x並將結果反饋到eval中,直到返回值為布爾值false。

eval(x)產生以下字符串:

"function f(x){var i,o="",ol=x.length,l=ol;while(x.charCodeAt(l/13)!=48){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o.substr(0,ol);}f(")04,\"100\\t\\300\\630\\420\\310\\U430\\610\\\\\\_L000\\YEM^[GWUWAJODRo^rzus':K4I)v~ey{./Pfej&socpqmqs410\\030\\520\\620\\730\\310\\010\\7230\\520\\730\\600\\W400\\530\\310\\410\\200\\410\\}100\\f?2';q.qia))&5VOL720\\C[V\\\\ZNDM\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;++y)04<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\"\"=o,i rav{)y,x(f noitcnuf")"

eval(eval(x))產生以下字符串:

"function f(x,y){var i,o="",l=x.length;for(i=0;i<l;i++){if(i<40)y++;y%=127;o+=String.fromCharCode(x.charCodeAt(i)^(y++));}return o;}f("MDNZ\\V[C\027LOV5&))aiq.q;'2?f\001}\014\002\014\013\035\004W\006\037\025\0327\010\013\037\026\025\030\014sqmqpcos&jefP/.{ye~v)I4K:'suzr^oRDOJAWUWG[^MEY\000L_\\\016\034U\013\024\036\003\t\001",40)"

最后,eval(eval(eval(x)))產生實際執行的javascript:

"document.writeln("<a href=\"mailto:info@premiersportfit.com\" title=\"\">info@premiersportfit.com</a>");0;"

評估最后一個字符串會將電子郵件地址寫入DOM並返回0,從而終止評估循環。

我不確定您是否要進行逆向工程,但是理想情況下,您只需添加必要的代碼以在混淆之前清除文本。 如果您無權訪問,則必須確定混淆器的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM