JavaScript-deobfuscator

Klistra in ett fragment av obfuskerad JavaScript – strängar kodade i hexformat, variabelnamn med en enda bokstav samt en avkodningsloop längst upp – så skalar verktyget av lagren ett i taget: avkodar escape-strängar, bäddar in uppslagsarrayen direkt i koden, byter namn på variabler till lättlästa platshållare, plattar ut triviala omslutningar och snyggar till resultatet. Användbart för att analysera misstänkta kodsnuttar som du hämtat från en webbsida eller en inklistrad Pastebin-länk.

Så här avmaskar du JavaScript

  1. 1

    Klistra in den obfuskerade källkoden

    Minifierad, packad eller utdata från verktyg i `javascript-obfuscator.io`-stil.

  2. 2

    Låt parsern gå igenom det

    Strängarrayer avkodas, numeriska sekvenser beräknas och obehövliga kodgrenar skärs bort.

  3. 3

    Använd namnbyte

    Enstaka variabler med namnet `a`/`b`/`c` har fått nya namn som `var1`, `var2` osv. – läsbara ersättningsnamn, inte nödvändigtvis meningsfulla namn.

  4. 4

    Förbättra

    Lägg till indrag och nya rader och generera kod som du faktiskt kan läsa och förstå.

Tekniker som deobfuscatorn omvändar

Omslutenhet Omvändning
Hex-kodade stränglitterala Decoda \x48\x69 till "Hi"
Unicode-escapeade identifierare \u006E\u0061\u006D\u0065 -> name
Strängarray + avkodningsfunktion Inbädda arrayen och anropa avkodaren vid analys
Numerisk konstantfolding 0x1F3 + 5 -> 504
eval(...)-wrappers Höj den inre koden till överordnad nivå
Kontrollflödesflattning (tillståndsmaskin) Detektera skiftfall och rekonstruera flödet
Obegrundad kod / meningslösa ternära uttryck Borttaka grenar som aldrig köras
_0x1a2b3c()-stylnamn Erställ med successivt ökande nummer såsom var1, var2

Begränsningar: vad verktyget inte gör

  • Återställ de ursprungliga variabelnamnen. När userEmail ombyrns till a kan inget verktyg återfinna det. Du får en läsbar struktur, inte den ursprungliga betydelsen.
  • Upppakka anpassade virtualiserare. Stora kommersiella obfuskatorer (JScrambler, företagsversionerna av Obfuscator.io) inkluderar en anpassad virtuell maskin som tolkar bytekod. Att undvika dessa kräver manuell omvänd ingenjörskonst.
  • Kör godtycklig kod. Deobfuscatorn utvärderar rena uttryck statiskt. Den hämtar inte fjärrresurser, skapar inte DOM-element eller kommunicerar med nätverket.

Typiska användningsfall

  • Säkerhetsforskning: att analysera ett misstänkt skript som har mottagits via e-post eller som distribuerats från en komprometterad CDN.
  • Kodarkéologi: återvinning av äldre kod där den enda kvarvarande resten är ett minifierat paket.
  • Lärande: att förstå vad en obfuskering på tutorialsnivå faktiskt gör i praktiken.

Säkerhet och etik

Kör aldrig opålitlig JavaScript i en webbläsarflik där du är inloggad på något viktigt – koden kan läsa cookies, anropa interna API:er och läcka ut tillstånd. Deobfuscatorn själv arbetar med källkoden som text; den kör inte koden du klistrar in.

Deobfuskera bara kod som du har behörighet att analysera. Omvänd ingenjörskonst på licensierad programvara kan vara begränsad i din jurisdiktion.

Vanliga frågor

Nej. När obfuscatorn ändrar namnet på userEmail till _0x1a2b3c försvinner det ursprungliga namnet. Deobfuscatorn ger läsbara ersättningsnamn (var1, var2) och rätt struktur, men inte de ursprungliga semantiska namnen.

Nej. Den analyserar koden som en AST och tillämpar statiska transformationer. Reina uttryck (såsom 0x1F3 + 5) kombineras samman, men inget påverkar nätverket, cookies eller DOM.

Ja, men utdata från bundler minimeras snarare än att medvetet förvirras, vilket ger kod som endast är förbättrad och där modulomslagarna återställts. Källkartaer, om de finns separat, ger betydligt bättre namn.

Stora kommersiella verktyg (Enterprise JScrambler, anpassade virtuella maskiner) inkluderar en bytekodtolkare som statisk analys inte kan avkoda. Verktyget erhåller bara ytlagret, men kärnlogiken förblir oklar utan manuell omvändning.

Relaterade verktyg

Verktyget finns på andra språk