Heim > Artikel > Web-Frontend > Crawler-Analyse JS Reverse-bestimmte Test-Sliding-Verschlüsselung (1)
Verwandte Lernempfehlungen: Javascript-Video-Tutorial
Heute werde ich einen bestimmten JS-Verschlüsselungscode analysieren und wiederherstellen. Wenn Sie ihn noch nicht kennen, sollten Sie ihn kennen. Das wirst du in Zukunft tun. Vertrau mir, wenn du mich triffst.
Nicht viel zu sagen, Zeit ist kostbar, kommen wir zur Sache!
Klicken Sie auf die Schaltfläche, um das Paket zu erfassen und zu verschieben. Das Anforderungsdatenpaket sieht wie folgt aus: Sie können eine Reihe von Anforderungsparametern sehen Verschlüsselung von w
Klicken Sie rein, Sie können die verschlüsselte JS-Datei sehen und zur Analyse lokal speichern.
AST-Wiederherstellung
Durch das Debuggen können Sie feststellen, dass es viele Unicode-Formatkodierungen und Verwirrung bei Array-Namen gibt
Stellen Sie zunächst die Unicode-Codierung wieder her, öffnen Sie die AST-Online-Analyse-Website (https://blogz.gitee.io/ast/[1])
Geben Sie den wiederherzustellenden Code ein
Sie kann nur sehen. Sie müssen das zusätzliche Attribut löschen, um den ursprünglichen Wert wiederherzustellen. Der Durchlaufcode lautet wie folgt:
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)=>{});复制代码
Beachten Sie, dass es sich bei jscode um den zuvor abgezogenen JS-Code handelt. Schließlich wird der wiederhergestellte Code in die Datei decode_slide.js geschrieben. Der nächste Schritt besteht darin, das verschleierte Array wiederherzustellen. Unter Berücksichtigung des Debugging-Codes basieren alle Arrays auf dem großen Array KBBji.$_Co am Anfang der JS-Datei. Gleichzeitig wird das Array vielen Variablen zugewiesen und die Variablennamen werden zufällig generiert.
Als nächstes müssen wir diese Variablennamen herausfinden und sie durch die entsprechenden Stringwerte ersetzen!
Parsen Sie den AST online Der _DFCB(66)-Code wurde wiederhergestellt, sodass Sie ein intuitives Gefühl für den Code bekommen!
Sie können anhand der Schlüsselwörter schnell nach dem Verschlüsselungsort suchen und er ist deutlich sichtbar! Wenn Sie es nicht wiederherstellen, können Sie es nicht finden. Nach der Wiederherstellung können wir den verschlüsselten Speicherort auf der Website schnell finden und einen Haltepunkt festlegenIch glaube, Sie können den Unterschied in der Lesbarkeit desselben Codes auf einen Blick erkennen. Glaubst du, das ist das Ende? Nein!
Nachdem der Code wiederhergestellt wurde, wir aber beim Debuggen auf der Website immer noch verschleierten Code haben, was sollen wir tun?
Schauen wir uns als Nächstes ein weiteres Artefakt an, Reres, das zum Zuordnen von Anforderungen zur lokalen Datei verwendet wird. Das heißt, Sie können lokales JS verwenden, um die Remote-JS-Datei zu ersetzen.
Die Verwendung bezieht sich direkt auf seinen Github https://github.com/annnhan/ReRes[2]
Nun, mit diesem Ding können wir das wiederhergestellte JS zum Debuggen auf der Website verwenden. Es ist zu stark!
Der Effekt ist wie folgt:
tql, jetzt werden die Verschlüsselungsparameter abgezogen und es gibt keinen Druck!
Backend-Antwort tql Holen Sie sich den entsprechenden Code!
Wenn Sie mehr über das Erlernen des Programmierens erfahren möchten, achten Sie bitte auf die Spalte „PHP-Schulung“!
Das obige ist der detaillierte Inhalt vonCrawler-Analyse JS Reverse-bestimmte Test-Sliding-Verschlüsselung (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!