関連する学習の推奨事項: JavaScript ビデオ チュートリアル
今日は、特定の JS 暗号化を分析して復元します。クロールを完了した人は、この確認コードを知っているはずです。まだ遭遇していない場合は、今後遭遇するでしょう。信じてください。
あまり言うことはありません。時間は貴重です。本題に入りましょう!
公式 Web サイトに入り、今日のトピックのスライド検証、その他の検証タイプの暗号化をクリックして選択します次の方法をマスターすれば、同様です。
#ボタンをクリックしてパケットをキャプチャし、ランダムにドラッグすると、リクエスト データ パケットは次のようになります。 大量のリクエスト パラメータが表示されます。実際に行う必要があるのは、w の暗号化を実装することです。クリックすると、暗号化された JS ファイルが表示されます。分析のためにローカルに保存します。まず Unicode エンコーディングを復元し、AST オンライン分析 Web サイト (https://blogz.gitee.io/ast/[1])
を開きます。復元されたコードを
##に入力します。元の値を復元するには、余分な属性を削除するだけでよいことがわかります。トラバーサル コードは次のとおりです:const parser = require("@babel/parser");const traverse = require("@babel/traverse").default;const t = require("@babel/types"); //操作节点的函数,比如判断节点类型,生成新的节点等:const generator = require("@babel/generator").default; //生成还原后的代码const fs = require('fs');var jscode = fs.readFileSync("./slide.js", { encoding: "utf-8"});const visitor = { StringLiteral(path) { delete path.node.extra }}let ast = parser.parse(jscode);traverse(ast, visitor);let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});fs.writeFile('decode_slide.js', code, (err)=>{});复制代码
const visitor = { VariableDeclaration(path){ const {declarations} = path.node; if(!t.isMemberExpression(declarations[0].init))return; if(declarations[0].init.property.name !== "$_Co")return; if(declarations.length !==3 || declarations[0].init.property === undefined)return; let value1 = declarations[0].id.name; let value2 = declarations[2].id.name; new_array.push(value1, value2); }};复制代码
以上がクローラー解析 JS 逆某テスト スライディング暗号化 (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。