{"id":21401306,"url":"https://github.com/kuizuo/js-deobfuscator","last_synced_at":"2025-04-13T07:48:03.272Z","repository":{"id":44357842,"uuid":"388614331","full_name":"kuizuo/js-deobfuscator","owner":"kuizuo","description":"js 代码反混淆","archived":false,"fork":false,"pushed_at":"2024-03-29T09:46:43.000Z","size":5449,"stargazers_count":691,"open_issues_count":5,"forks_count":168,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-13T07:48:02.999Z","etag":null,"topics":["ast","babel","deobfuscator","javascript","obfuscator"],"latest_commit_sha":null,"homepage":"https://js-deobfuscator.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kuizuo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-22T22:30:59.000Z","updated_at":"2025-04-12T14:39:24.000Z","dependencies_parsed_at":"2024-09-17T15:49:45.191Z","dependency_job_id":"9f6e8e8b-7013-42f5-834c-bbda8d11b1fd","html_url":"https://github.com/kuizuo/js-deobfuscator","commit_stats":null,"previous_names":["kuizuo/js-de-obfuscator"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuizuo%2Fjs-deobfuscator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuizuo%2Fjs-deobfuscator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuizuo%2Fjs-deobfuscator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuizuo%2Fjs-deobfuscator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuizuo","download_url":"https://codeload.github.com/kuizuo/js-deobfuscator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248681494,"owners_count":21144700,"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":["ast","babel","deobfuscator","javascript","obfuscator"],"created_at":"2024-11-22T15:27:09.233Z","updated_at":"2025-04-13T07:48:03.245Z","avatar_url":"https://github.com/kuizuo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## JS混淆代码还原\n\n让混淆不再成为逆向分析中的绊脚石\n\n## 使用\n\n### 网页\n\n[js-deobfuscator.vercel.app](https://js-deobfuscator.vercel.app/) 在线体验\n\n![image-1](./images/1.png)\n\n在执行还原前，请根据实际代码配置\n\n### 本地\n\n安装\n\n```\ngit clone https://github.com/kuizuo/js-deobfuscator\ncd js-deobfuscator\npnpm i\n```\n\n在 tmp/input.js 存放需要反混淆的代码, 执行 `pnpm run tmp` 将会输出 tmp/output.js 反混淆后的代码.\n\n在 example 目录下存放了一些我个人遇到混淆代码实例分析以及配置选项，每个子目录的结构如:\n\n```\n├── xxx                           # 子目录\n│   ├── index.ts                  # 运行代码\n│   ├── input.js                  # 混淆代码\n│   ├── output.js                 # 还原后代码\n│   ├── pretty.js                 # 用作美化对比\n│   ├── setupCode.js              # 注入执行代码\n│   ├── errorCode.js              # 当替换代码导致语法错误, 则将错误代码输出到该文件\n```\n\n由于项目采用 ts 开发且使用 esmodule，因此建议使用 [tsx](https://github.com/privatenumber/tsx) 来执行 index.ts。\n\n## 使用文档\n\n混淆还原有几个关键代码\n\n**字符串数组**：一个长度非常长的字符串数组，通常存放所有加密的字符串\n\n**乱序函数**：通常是一个自调用函数，参数为字符串数组，目的是对字符串数组进行打乱操作\n\n**解密器**：通过调用解密器(函数)，还原成原始文本。\n\n本项目提供三种方式用于定位解密器：字符串数组长度，解密器调用次数，自行扣代码注入，根据实际混淆代码来进行定位。\n\n## 致谢\n\n- [反爬虫 AST 原理与还原混淆实战](https://book.douban.com/subject/35575838/)\n- [j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)\n- [sxzz/ast-explorer](https://github.com/sxzz/ast-explorer)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuizuo%2Fjs-deobfuscator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuizuo%2Fjs-deobfuscator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuizuo%2Fjs-deobfuscator/lists"}