综合介绍
Humanify 是一个开源工具,托管于 GitHub,由开发者 Jesse Luoto 创建,旨在帮助程序员利用人工智能技术快速解密和美化混淆的 JavaScript 代码。它集成了 ChatGPT 和本地语言模型,能够将难以阅读的压缩代码转化为清晰易懂的格式,适用于逆向工程、代码审查或学习分析。项目支持多种运行模式,包括通过 OpenAI API、Google Gemini 或本地模型进行操作,灵活性极高。自推出以来,Humanify 在 GitHub 上获得超过 1700 个星标和 75 次分叉,社区活跃度较高,适合开发者处理复杂代码时使用。
功能列表
- 代码反混淆:通过 AI 技术将混淆的 JavaScript 代码还原为可读格式。
- 变量重命名:自动为代码中的变量和函数生成有意义的名称。
- 代码美化:将压缩代码重新格式化,添加缩进和换行,提升可读性。
- 多模式支持:支持 OpenAI API、Google Gemini API 或本地模型运行。
- 命令行操作:提供便捷的 CLI 界面,适合脚本化批量处理。
- 开源免费:完全开源,用户可自由下载、修改和贡献代码。
使用帮助
安装流程
Humanify 是一个基于 Node.js 的工具,需要先安装相关环境。以下是详细的安装步骤:
1. 准备环境
- 安装 Node.js:确保你的电脑已安装 Node.js(建议版本 16 或以上)。可以从 Node.js 官网 下载并安装。
- 安装 Git:如果需要从 GitHub 克隆仓库,需安装 Git,下载地址:Git 官网。
- 检查环境:打开终端,输入
node -v
和npm -v
,确认版本号正常显示。
2. 下载 Humanify
- 通过 npm 全局安装(推荐):
npm install -g humanifyjs
安装完成后,直接在终端使用 humanify
命令。
- 从 GitHub 克隆源码(适合开发者):
git clone https://github.com/jehna/humanify.git cd humanify npm install
安装依赖后,通过
npm start
运行项目。
3. 配置 API 密钥(可选)
Humanify 支持 OpenAI 和 Google Gemini 模型,需配置 API 密钥:
- OpenAI 密钥:
- 注册 OpenAI 账号,获取 API 密钥。
- 在终端运行时添加参数
--apiKey="your-token"
,或设置环境变量:export OPENAI_API_KEY="your-token"
- Google Gemini 密钥:
- 访问 Google AI Studio 获取密钥。
- 类似地,运行时使用
--apiKey="your-token"
,或设置环境变量:export GEMINI_API_KEY="your-token"
4. 本地模型模式(可选)
若不想依赖云端 API,可使用本地语言模型:
- 安装
node-llama-cpp
依赖(已在package.json
中列出)。 - 运行时添加
--local
参数。
如何使用
Humanify 的核心功能是通过命令行解密和美化 JavaScript 代码。以下是详细操作流程:
基本命令
在终端输入以下命令运行 Humanify:
humanify [模式] [选项] 输入文件.js -o 输出文件.js
- 模式:
openai
(使用 OpenAI)、gemini
(使用 Google Gemini)、local
(本地模型)。 - 选项:如
--apiKey
指定密钥,-o
指定输出文件。
示例 1:使用 OpenAI 解密代码
假设你有一个混淆文件 obfuscated.js
,想输出到 deobfuscated.js
:
humanify openai --apiKey="sk-xxx" obfuscated.js -o deobfuscated.js
- 程序会调用 OpenAI API,分析代码并生成可读版本。
- 结果保存在
deobfuscated.js
中。
示例 2:使用本地模型
若无 API 密钥,可用本地模式:
humanify local obfuscated.js -o deobfuscated.js
- 确保本地模型已正确配置,程序会自动处理。
示例 3:检查帮助信息
输入以下命令查看所有选项:
humanify --help
- 输出包括支持的命令、参数和用法说明。
主要功能操作流程
1. 代码反混淆与美化
- 步骤:
- 准备混淆的 JavaScript 文件(如
test.js
)。 - 运行命令,例如:
humanify openai --apiKey="your-token" test.js -o result.js
- 等待处理完成(视文件大小和网络情况,耗时数秒至数分钟)。
- 打开
result.js
,查看格式化后的代码。
- 准备混淆的 JavaScript 文件(如
- 效果:混淆的单行代码会被拆分成多行,变量名更具可读性。
2. 变量重命名
- 步骤:
- 输入命令时,AI 会自动识别无意义的变量名(如
a
、b
)。 - 根据上下文生成新名称(如
userData
、calculateSum
)。 - 检查输出文件,确认变量名是否符合逻辑。
- 输入命令时,AI 会自动识别无意义的变量名(如
- 注意:若结果不理想,可尝试调整模型参数(如
temperature
)或更换模式。
3. 处理大文件
- 步骤:
- 对于大型文件,建议分段处理,避免 API 请求超限。
- 将代码分成多个小文件,分别运行命令。
- 合并输出结果。
- 技巧:使用
--verbose
参数查看详细日志,便于调试。
注意事项
- 网络问题:使用 OpenAI 或 Gemini 模式时,确保网络稳定,否则可能报错(如
429 Too Many Requests
)。 - 依赖更新:定期运行
npm update
更新依赖,避免版本兼容问题。 - 社区支持:如遇问题,可在 GitHub Issues 页面提交反馈,社区开发者会积极响应。
通过以上步骤,你可以轻松上手 Humanify,无论是解密代码还是优化代码阅读体验,都能大幅提升效率。