# humanify **Repository Path**: fatgrass/humanify ## Basic Information - **Project Name**: humanify - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-23 - **Last Updated**: 2025-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HumanifyJS > 使用大语言模型(LLM)反混淆 JavaScript 代码 [English](./README_en.md) | 简体中文 HumanifyJS 是一个强大的 JavaScript 代码反混淆工具,它结合大语言模型(如 ChatGPT、DeepSeek、Gemini 和 Llama)与专业工具来反混淆、解压缩、转译和解包 JavaScript 代码。 **核心原则**:LLM 仅提供智能命名建议,所有结构性转换都在 Babel AST 层面完成,确保代码语义完全等价。 ### 🎉 版本 2 已发布! v2 相比 v1 的重大改进: * ✅ 不再需要 Python!纯 Node.js 实现 * ✅ 完善的测试体系,代码库现在可维护性强 * ✅ 全新的 CLI 工具 `humanify`,可通过 npm 安装 * ✅ 支持 DeepSeek 大模型(推荐国内用户使用) ### ➡️ 查看[详细介绍博客][blogpost]了解更多! [blogpost]: https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification ## 示例效果 **输入**(混淆后的代码): ```javascript function a(e,t){var n=[];var r=e.length;var i=0;for(;i= 20 **全局安装(推荐)**: ```bash npm install -g humanifyjs ``` **或使用 npx(无需安装)**: ```bash npx humanifyjs --help ``` ### 立即尝试 ```bash # 使用 DeepSeek(推荐国内用户) humanify deepseek your-minified-file.js # 使用 OpenAI humanify openai your-minified-file.js # 使用 Google Gemini humanify gemini your-minified-file.js # 使用本地模型(免费但需要下载模型) humanify download 2b # 先下载模型 humanify local your-minified-file.js ``` ## 支持的 LLM 模型 ### 🔥 DeepSeek(新增,推荐国内用户) ```bash # 设置 API Key export DEEPSEEK_API_KEY="sk-xxxxx" # 运行反混淆 humanify deepseek input.js # 或直接指定 API Key humanify deepseek --apiKey="sk-xxxxx" input.js ``` **优势**: - ✅ 国产模型,访问速度快 - ✅ 价格便宜(约 ¥1/百万 tokens) - ✅ 效果优秀,准确率高 - ✅ 支持大上下文窗口 **获取 API Key**:访问 [DeepSeek 开放平台](https://platform.deepseek.com/) ### OpenAI ```bash export OPENAI_API_KEY="sk-xxxxx" humanify openai --model gpt-4o-mini input.js ``` **支持模型**: - `gpt-4o-mini`(默认,快速且便宜) - `gpt-4o`(更强大) - `gpt-3.5-turbo` ### Google Gemini ```bash export GEMINI_API_KEY="xxxxx" humanify gemini input.js ``` **支持模型**: - `gemini-1.5-flash`(默认,免费额度充足) - `gemini-1.5-pro` ### 本地模型(完全免费) ```bash # 下载模型(一次性) humanify download 2b # 使用本地模型 humanify local input.js # 支持 GPU 加速(Apple Silicon / NVIDIA CUDA) # 或使用 CPU 模式 humanify local --disableGpu input.js ``` **可用模型**: - `2b` - 小模型(约 2GB,推荐入门) - `7b` - 中等模型(约 7GB) - `13b` - 大模型(约 13GB) ## 核心特性 ### 🎯 智能重命名 - 基于代码上下文理解变量和函数的实际用途 - 生成有意义的、符合规范的命名 - 支持处理复杂的作用域和闭包 ### 🔧 结构化转换 - Babel AST 层面的代码规范化 - 自动转换常见混淆模式(如 `void 0` → `undefined`) - 保证代码语义 100% 等价 ### 📦 Webpack 解包 - 自动识别并解包 Webpack bundle - 分离各个模块到独立文件 - 保留模块依赖关系 ### 🎨 代码美化 - 使用 Prettier 进行专业级格式化 - 统一代码风格 - 提升可读性 ## 使用说明 ### 基础命令 ```bash # 最简单的用法 humanify deepseek input.js # 指定输出目录 humanify deepseek --outputDir output input.js # 显示详细日志 humanify deepseek --verbose input.js # 调整上下文窗口大小 humanify deepseek --contextSize 2000 input.js ``` ### 高级选项 ```bash # DeepSeek 完整配置 humanify deepseek \ --apiKey="sk-xxxxx" \ --model="deepseek-chat" \ --baseURL="https://api.deepseek.com/v1" \ --outputDir="output" \ --contextSize=1000 \ --verbose \ input.js # OpenAI 使用自定义端点(如反向代理) humanify openai \ --apiKey="sk-xxxxx" \ --baseURL="https://your-proxy.com/v1" \ --model="gpt-4o-mini" \ input.js # 本地模型使用固定随机种子(可复现结果) humanify local --seed 42 --model 7b input.js ``` ### 环境变量配置 创建 `.env` 文件: ```bash DEEPSEEK_API_KEY=sk-xxxxx OPENAI_API_KEY=sk-xxxxx GEMINI_API_KEY=xxxxx ``` 然后直接运行: ```bash humanify deepseek input.js ``` ## 成本估算 ### Token 消耗计算 ```bash # 粗略估算所需 tokens(约为文件大小的 2 倍) echo "$((2 * $(wc -c < yourscript.min.js)))" ``` ### 参考价格 **DeepSeek**(推荐): - 价格:约 ¥1/百万 tokens - 示例:100KB 文件约需 ¥0.2-0.5 **OpenAI**: - `gpt-4o-mini`:$0.15/百万 tokens - 示例:100KB 文件约需 $0.05-0.15 **Gemini**: - 有充足的免费额度 - 小型项目通常免费 **本地模型**: - 完全免费 - 需要硬件资源(GPU 推荐) ## 工作原理 ``` 输入混淆代码 ↓ Webcrack(解包 Webpack Bundle) ↓ Babel 转换(AST 规范化) ↓ LLM 智能重命名 ↓ Prettier 格式化 ↓ 输出可读代码 ``` ## 开发 ### 克隆仓库 ```bash git clone https://github.com/thejunkland/humanify.git cd humanify npm install ``` ### 开发命令 ```bash # 运行开发版本 npm start -- deepseek test/obf_1.js # 构建 npm run build # 运行测试 npm test # 运行所有测试 npm run test:unit # 单元测试 npm run test:e2e # 端到端测试 npm run test:llm # LLM 集成测试 # 代码检查 npm run lint # Prettier + ESLint npm run lint:prettier # 仅 Prettier npm run lint:eslint # 仅 ESLint ``` ### 项目结构 ``` src/ ├── commands/ # CLI 命令实现 │ ├── deepseek.ts # DeepSeek 命令 │ ├── openai.ts # OpenAI 命令 │ ├── gemini.ts # Gemini 命令 │ ├── local.ts # 本地模型命令 │ └── download.ts # 模型下载命令 ├── plugins/ # 转换插件 │ ├── babel/ # Babel AST 转换 │ ├── deepseek-rename.ts # DeepSeek 重命名 │ ├── openai/ # OpenAI 重命名 │ ├── gemini-rename.ts # Gemini 重命名 │ ├── local-llm-rename/ # 本地模型重命名 │ ├── webcrack.ts # Webpack 解包 │ └── prettier.ts # 代码格式化 └── unminify.ts # 核心处理流程 ``` ## 常见问题 ### Q: 处理大文件时超时怎么办? 减小上下文窗口或分割文件: ```bash humanify deepseek --contextSize 500 large-file.js ``` ### Q: 本地模型下载失败? 检查网络,或使用代理: ```bash export HTTP_PROXY=http://your-proxy:port humanify download 2b ``` ### Q: 反混淆结果不理想? 尝试使用更强大的模型或增加上下文: ```bash humanify deepseek --contextSize 2000 input.js # 或使用 OpenAI gpt-4o humanify openai --model gpt-4o input.js ``` ### Q: DeepSeek vs OpenAI 选择? - **DeepSeek**:国内访问快,价格便宜,效果好,推荐首选 - **OpenAI**:生态成熟,gpt-4o 在复杂场景下更强 - **Gemini**:有免费额度,适合轻量使用 - **本地**:完全免费,适合大量文件或离线场景 ## 文档 - 📖 [中文使用指南](./user_guide_cn.md) - 详细的中文使用文档 - 📖 [English README](./README_en.md) - English version - 📝 [开发指南](./CLAUDE.md) - 开发者参考文档 - 🌐 [博客文章](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification) - 深入讲解 ## 贡献 欢迎贡献!请 fork 本仓库并使用 feature 分支提交 Pull Request。 ## 许可证 MIT License - 详见 [LICENSE](./LICENSE) 文件 ## 致谢 本项目使用了以下优秀的开源项目: - [Babel](https://babeljs.io/) - JavaScript 编译器 - [Webcrack](https://github.com/j4k0xb/webcrack) - Webpack bundle 解包工具 - [Prettier](https://prettier.io/) - 代码格式化工具 - [node-llama-cpp](https://github.com/withcatai/node-llama-cpp) - Node.js 本地 LLM 支持 ## 相关链接 - 🏠 [项目主页](https://github.com/thejunkland/humanify) - 🐛 [问题反馈](https://github.com/thejunkland/humanify/issues) - 💬 [讨论区](https://github.com/thejunkland/humanify/discussions) - 📦 [NPM 包](https://www.npmjs.com/package/humanifyjs) --- **如果这个项目对你有帮助,请给我们一个 ⭐️ Star!**