JavaScript-deobfuscator

Plaats een fragment gemaskeerde JavaScript-code, bestaande uit hexadecimale strings, variabelnamen van één letter en een decoderingsloop op de bovenkant, en het hulpmiddel ontraagt de laagstructuur: verwijder ongebruikelijke tekens, integreer de zoekarray in de code, verander variabelnamen in leesbare plaatsers, vereenvoudig overbodige omhulsingen en verbeter het eindresultaat. Uitstekend geschikt voor het analyseren van verdachte codefragmenten die u van een pagina of een gekopieerde Pastebin-link hebt gehaald.

Hoe je JavaScript onverduisteren

  1. 1

    Plak de gemaskeerde bron

    Geminificeerd, gepakt of uitgevoerd met tools in het `javascript-obfuscator.io`-stijl.

  2. 2

    Laat de parser het doorlopen.

    Stringarrays worden gedecodeerd, numerieke sequenties worden geëvalueerd en onnodige codeafdelingen worden verwijderd.

  3. 3

    Naam wijzigen

    De variabelen met één letter `a`/`b`/`c` worden hernoemd tot `var1`, `var2`, enzovoort, leesbare plaatsnamen, niet per se zinvolle namen.

  4. 4

    Verfraaien

    Identificeer de tekst, voeg nieuwe regels toe en genereer code die je daadwerkelijk kunt lezen en analyseren.

Technieken waarmee de deobfuscator de versleuteling ontsleutelt

Verduistering Omkeer
Hex-geëncodeerde stringliteralen Decodeer \x48\x69 terug naar "Hi"
Unicode-geëncodeerde identificatoren \u006E\u0061\u006D\u0065 -> name
Stringarray + decoderfunctie De array inlineen en de decoder op het moment van analyse oproepen
Numerieke constante vouwing 0x1F3 + 5 -> 504
eval(...)-wrappers Verplaats de interne code naar het hoogste niveau
Vervorming van de controlestroom (toestandsmachine) Identificeer de switch-case en reconstrueer de stroom
Ongebruikte code / nutteloze ternaire instructies Verwijder takken die nooit worden uitgevoerd
Stylnamen _0x1a2b3c() Vervang door oplopende namen var1, var2

Beperkingen: wat het hulpmiddel niet kan doen

  • Oorspronkelijke variabelnamen herstellen. Nadat userEmail is hernoemd tot a, kan geen enkele tool deze naam meer terugraden. U krijgt een leesbare structuur, niet de oorspronkelijke betekenis.
  • Aangepaste virtualizers uitpakken. Zware commerciële obfuseringsprogramma's (zoals JScrambler en de bedrijfsversies van Obfuscator.io) gebruiken een zelfgemaakte virtuele machine die bytecode interpreteert. Om deze te ontwijken, is handmatige omgekeerde engineering vereist.
  • Voer willekeurige code uit. De deobfuscator beoordeelt zuivere uitdrukkingen statisch; hij haalt geen externe bronnen op, maakt geen DOM-elementen en communiceert niet met het netwerk.

Typische toepassingsvoorbeelden

  • Beveiligingsonderzoek: het analyseren van een verdachte script dat via een e-mail is ontvangen of wordt verstrekt door een gekompromitteerde CDN.
  • Codearcheologie: het herstellen van legacy-code waarbij het enige overgebleven artefact een geminificeerd pakket is.
  • Leren: begrijpen wat een tutorial-niveau van obfuscatie eigenlijk doet op de achtergrond.

Veiligheid en ethiek

Voer nooit onbetrouwbare JavaScript-code uit in een browsertab waarin je bent ingelogd bij belangrijke systemen: deze code kan cookies lezen, interne API's aanroepen en de systeemtoestand naar buiten lekken. De deobfuscator werkt rechtstreeks met de broncode als tekst; hij voert de code die u plakt niet uit.

U mag alleen code ontsleutelen die u hebt toestemming om te analyseren. Omgekeerde engineering van gelicentieerde software kan in uw rechtsgebied beperkt zijn.

Veelgestelde vragen

Nee. Zodra de obfuscator userEmail hernoemt tot _0x1a2b3c, verdwijnt de oorspronkelijke naam. De deobfuscator biedt leesbare plaatsnamen (var1, var2) en een correcte structuur, maar niet de oorspronkelijke semantische namen.

Nee. Het analyseert de code als een AST en toepast statische transformaties. Rein uitdrukkingen (zoals 0x1F3 + 5) worden samengevoegd, maar er wordt niets gedaan aan het netwerk, cookies of het DOM.

Ja, maar de uitvoer van de bundler wordt geminificeerd in plaats van opzettelijk verwarrend gemaakt; het resultaat is dus alleen nog mooier code met de herstelde module-wrappers. Bronkaarten, wanneer deze apart beschikbaar zijn, bieden veel betere namen.

Zware commerciële hulpmiddelen (zoals Enterprise JScrambler of zelfgemaakte virtuele machines) bevatten een bytecode-interpreter die niet te ontcijferen is met statische analyse. Het hulpmiddel verkrijgt wel het oppervlakkelijke deel van de code, maar de kernlogica blijft ondoorzichtig zonder manuele omkeeranalyse.

Gerelateerde tools

Tool beschikbaar in andere talen