1

私は JS の難読化について熱心にトレーニングしており、すべての高度な概念を理解し始めていますが、最近、難読化されたコードを見つけました。これは何らかの形式の「ネイティブ Javascript コード」であると考えています。このタイプの難読化:

ここに小さな抜粋があります:

'\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40'

このように呼ばれます:

eval(eval('\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40'))

コードは別の人の作品であり、JS チャレンジで遭遇したため、完全なコードを投稿していないため、私が示した例は機能しませんが、完全なコードは機能します。


ここに私の質問があります: これはどのタイプのコードですか? そして、どこでそれについてもっと学ぶことができますか?


任意の提案をいただければ幸いです:)

4

3 に答える 3

6

文字がエスケープされた単なる文字列です。任意のブラウザの JavaScript コンソールで読むことができます。

console.log('\141\75\160\162\157\155\160\164\50\47\105\156\164\162\145\172\40')

印刷されます:

"a=prompt('Entrez "
于 2013-04-04T08:41:41.707 に答える
1

これは単にエスケープされた文字であり、クエリの文字列を出力する部分と、返された文字列を実際に実行する部分があります。コンソールで呼び出してみてください。

eval('\160\162\157\155\160\164\50\47\105\156\164\162\145\172\47\51')

役立つかもしれません?

于 2013-04-04T08:42:33.027 に答える
0

これらの数値は、文字のアスキー コード ( http://www.asciitable.com/index/asciifull.gif ) です (8 進表現)。文字に変換できます。これは、誰かが を作成したい場合XSS attack、または js コードを非表示にしたい場合に使用されます。

したがって、あなたが書いた文字列は次のとおりです。

 a=prompt('Entrez 

js エンジン、ブラウザーは、8 進形式を「実際の」文字列に変換できます。機能付きでeval走れました。(「翻訳された」コードに構文エラーがない場合)

于 2013-04-04T08:47:17.047 に答える