{"id":20418546,"url":"https://github.com/willnode/deobfuscator","last_synced_at":"2025-06-22T01:38:43.817Z","repository":{"id":42462104,"uuid":"164893095","full_name":"willnode/deobfuscator","owner":"willnode","description":"Online Javascript Deobfuscator Tool","archived":false,"fork":false,"pushed_at":"2023-10-07T21:38:23.000Z","size":13907,"stargazers_count":141,"open_issues_count":6,"forks_count":17,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T12:01:30.204Z","etag":null,"topics":["deobfuscator","eval","javascript-deobfuscator"],"latest_commit_sha":null,"homepage":"https://willnode.github.io/deobfuscator/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willnode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"willnode"}},"created_at":"2019-01-09T15:56:28.000Z","updated_at":"2025-03-14T00:18:14.000Z","dependencies_parsed_at":"2022-08-12T17:40:11.540Z","dependency_job_id":null,"html_url":"https://github.com/willnode/deobfuscator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willnode%2Fdeobfuscator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willnode%2Fdeobfuscator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willnode%2Fdeobfuscator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willnode%2Fdeobfuscator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willnode","download_url":"https://codeload.github.com/willnode/deobfuscator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248605805,"owners_count":21132239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deobfuscator","eval","javascript-deobfuscator"],"created_at":"2024-11-15T06:33:39.576Z","updated_at":"2025-04-12T17:34:33.793Z","avatar_url":"https://github.com/willnode.png","language":"JavaScript","readme":"# Javascript Deobfuscator\n\nNeed to edit an obfuscated Javascript? This repo is the way to de-obfuscate any kind of obfuscated Javascript, especially if it comes from automatic tools like https://obfuscator.io/.\n\nBecause obfuscation varies wildly in the internet, the process is not automatic. It won't give you one-click-and-it-done but instead it gives you a script editor with tools necessary to deobfucate any kind of javascript (provided you also familiar with how JS works of course).\n\nYour work is automatically saved to SessionStorage so don't worry about accidental refresh or page navigation.\n\n## The Editor\n\nThis tool uses Monaco. The editor that powers VSCode. It itself can do Find + Replace, Undo + Redo, Syntax + Error highlighting, unused variables detection, and other neat stuff.\n\n## Formatting Tools\n\nAll formatting tools affects selected text, or all text in editor if none selected.\n\n#### Format Document\n\nBeautify javascript for all text in editor.\n\nYou should format your document first before doing other tasks so it reduces chance of your code become corrupt.\n\n#### Simplify String `simplifyString()`\n\nThis reformats string `''` and `\"\"`. Example `\"\\x75\\x73\\x65\\x20\\x73\\x74\\x72\\x69\\x63\\x74\"` becomes `\"use strict\"`.\n\nCurrently doesn't work with literal string. Also, it uses regex, so beware with complex string (e.g. `'\\''`).\n\n#### Simplify Number `simplifyNumber()`\n\nThis reformats hex number. Example `0xff` becomes `255`.\n\n#### Simplify Object Access `simplifyAccess()`\n\nThis reformats object access. Example `document[\"body\"][\"style\"][\"color\"]=\"black\";` becomes `document.body.style.color=\"black\";`\n\n#### Simplify Hex Name `simplifyHex()`\n\nThis renames all variables `_0x[Hex code]` to it's shorter name (`a`, `b`, `c`, etc.).\n\nBeware that this method isn't 100% safe. It can't detect any variable name collision yet.\n\n## Evaluation Tools\n\nThis is a powerful tool to let you evaluate javascript code and reveal it's hidden content.\n\nIt's advised for you to open Browser Console (Ctrl+Shift+I, tab Console) for helpful information.\n\n#### Push `evalPush()` and Pop `evalPop()`\n\nPush selected text to \"code stack\", or pop it.\n\nIt means to be used with eval buttons (explained below). These buttons does nothing on it's own.\n\nPushing to code stack means if there's line `A` then you push `B`, then the current stack will be `A\\nB` (A followed by B in next line).\n\n#### Eval Selected `evalStr()`\n\nEvaluate selected code along with current variables stack on. If it returns any valid JSON value (includes array and object) it will replaces the selected code.\n\nA practical example is like this:\n\n```js\nvar foo = {'baz' =\u003e 'bar'};\nvar result = foo['baz'];\n```\n\nIf you push the first line to stack and then `evalStr` the text `foo['baz']`, it will replaced as `\"bar\"`.\n\n#### Eval Auto `evalAuto()`\n\nHarnessing the power of regex, this \"intelligently\" replaces any \"captured\" variable in the selected code, like if you do `evalStr` on each one of them. If it used correctly it will definitely saves you a lot of time.\n\nThe captured variables are based on the current stack. It will detect all `var`/`const`/`let`. If the evaluation returns string or number, it will be replaced.\n\n\n#### Sync Vars `syncVar()`\n\nSelect a word variable and any derived variable names will be magically recusively replaced. Example select `foo` and then `let bar = foo; let baz = bar; console.log(baz)` will simply become `console.log(foo)`. Combined with `evalAuto` both are destructive yet very time saving operation.\n\n## Hidden Evaluation Tools\n\nThese tools are experimental. Although it's useful in certain cases. To access it you need to call the function in browser console.\n\n#### `evalBareStr`\n\nSimilar like `evalStr`, but without `JSON.stringify`. This is useful for extracting code out of eval string, for example.\n\n#### `simplifyStringExp`\n\nSimilar like `simplifyString`, but also merges string concatenation (e.g. `\"foo\" + \"bar\"`). Because it's flexibility, it only detects double quote `\"\"` right now. Proceed with caution.\n\n#### `simplifyNumberExp`\n\nSimilar like `simplifyNumber`, but also merges number operations (e.g. `-1 + 2`). Because it's flexibility, it only detect regular number. Proceed with caution.\n\n#### `splitVar`\n\nSplit two or more concatenated `const`/`let`/`var` definitions in a selected single expression. It does not simply naively replace `,`, it's aware about array/object presence. Because of that you can't just select multiple functions and expect it gots the effect too. Still kinda useful for readability.\n\n\nFeel free to requests other operation ideas in Issue Tracker.\n","funding_links":["https://github.com/sponsors/willnode"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillnode%2Fdeobfuscator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillnode%2Fdeobfuscator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillnode%2Fdeobfuscator/lists"}