Skip to content

基于 JShaman.com WebAPI 的 JavaScript 代码混淆加密工具,支持单文件和目录批量处理,支持添加右键菜单处理。

License

Notifications You must be signed in to change notification settings

nuomiaa/jshaman-script

Repository files navigation

JShaman JavaScript 混淆加密工具

Version License Node.js Platform Language

GitHub stars GitHub forks GitHub issues GitHub release PRs Welcome Maintenance

基于 JShaman.com WebAPI 的 JavaScript 代码混淆加密工具,支持单文件和目录批量处理,支持添加右键菜单处理。

✨ 主要功能

  • ✅ 支持单个 JS 文件混淆加密
  • ✅ 支持目录批量混淆加密(包括子目录)
  • ✅ 支持多项目配置系统
  • ✅ 自动向上查找项目配置文件
  • ✅ Windows 右键菜单集成
  • ✅ 详细的处理日志和统计信息
  • 🎨 炫酷的旋转加载动画
  • 🎭 随机趣味提示语
  • ⏱️ 实时显示处理时间

📦 安装

方式 1:使用发布包(推荐)

发布包中已包含 Node.js 安装程序,无需单独下载:

  1. 下载最新的 Release 发布包
  2. 解压到任意目录
  3. 如果未安装 Node.js,运行包内的 node-v22.20.0-x64.msi 进行安装
  4. 在项目目录打开命令行,安装依赖:
    npm install
    # 或使用 pnpm
    pnpm install

方式 2:从源码安装

  1. 克隆仓库:

    git clone https://github.com/nuomiaa/jshaman-script.git
    cd jshaman-script
  2. 确保已安装 Node.js(推荐 v22.20.0 或更高版本)

  3. 安装依赖:

    npm install
    # 或使用 pnpm
    pnpm install

🚀 使用方法

1. 命令行使用

处理单个文件:

node obfuscate.js path/to/your/file.js

处理整个目录:

node obfuscate.js path/to/your/directory

启用调试模式(查看配置文件查找过程):

node obfuscate.js path/to/your/file.js --debug
# 或使用简写
node obfuscate.js path/to/your/file.js -d

2. 右键菜单使用

安装右键菜单:

  1. 目录右键菜单:双击 right_click.reg 导入注册表

    • 在任意文件夹上右键,选择 "Obfuscate directory"
  2. 文件右键菜单:双击 right_click_file.reg 导入注册表

    • 在任意 .js 文件上右键,选择 "Obfuscate JS file"

注意:修改 .reg 文件中的路径为您的实际安装路径。

⚙️ 配置系统

配置文件位置

脚本会自动向上查找项目配置文件(最多20层目录,直到根目录):

  • jshaman.config.yaml(推荐,支持注释)
  • jshaman.config.yml(YAML 简写格式)
  • jshaman.config.json(JSON 格式,不支持注释)

为什么使用 YAML?

  • ✅ 支持注释,便于配置说明
  • ✅ 语法简洁,易读易写
  • ✅ 避免 ES Module 兼容性问题
  • ✅ 无需考虑 CommonJS vs ES Module

查找逻辑:

  1. 从目标文件/目录开始
  2. 在当前目录查找配置文件
  3. 未找到则移动到父目录
  4. 重复步骤2-3,直到找到配置文件或到达根目录

示例目录结构:

D:\Projects\
  └── MyProject\                    ← 配置文件位置
      ├── jshaman.config.js         ← 会被找到
      ├── src\
      │   ├── utils\
      │   │   └── helper.js         ← 处理此文件时会向上查找
      │   └── app.js
      └── dist\

调试查找过程:

如果配置文件未被找到,使用 --debug 参数查看详细查找过程:

node obfuscate.js D:\Projects\MyProject\src\utils\helper.js --debug

输出示例:

[调试] 开始查找配置文件
[调试] 起始路径:D:\Projects\MyProject\src\utils
[调试] 第 1 层 - 查找目录:D:\Projects\MyProject\src\utils
[调试]   检查文件:D:\Projects\MyProject\src\utils\jshaman.config.js
[调试]   检查文件:D:\Projects\MyProject\src\utils\jshaman.config.json
[调试] 第 2 层 - 查找目录:D:\Projects\MyProject\src
[调试]   检查文件:D:\Projects\MyProject\src\jshaman.config.js
[调试]   检查文件:D:\Projects\MyProject\src\jshaman.config.json
[调试] 第 3 层 - 查找目录:D:\Projects\MyProject
[调试]   检查文件:D:\Projects\MyProject\jshaman.config.js
[调试] ✓ 找到配置文件!

创建配置文件

方式1:使用 YAML 格式(推荐)

cp jshaman.config.example.yaml your-project/jshaman.config.yaml

方式2:使用 JSON 格式

cp jshaman.config.example.json your-project/jshaman.config.json

提示: YAML 格式支持注释,便于团队协作和配置说明,推荐使用!

配置参数说明

YAML 格式示例:

# VIP码:免费使用设为 "free",购买VIP后填写VIP码
vip_code: "free"

# 是否覆盖原文件(false 会创建 .obfuscated.js 副本)
overwrite_after_obfuscate: false

# 执行完成后是否自动关闭窗口
auto_close_on_complete: false

# 混淆参数(仅VIP模式有效)
obfuscate_options:
  compact: "true"                        # 压缩代码
  renameGlobalFunctionVariable: "false"  # 混淆全局变量名
  controlFlowFlattening: "true"          # 平展控制流
  deadCodeInjection: "false"             # 僵尸代码植入
  stringArray: "true"                    # 字符串阵列化
  stringArrayEncoding: "true"            # 阵列字符串加密
  disableConsoleOutput: "true"           # 禁用console输出
  debugProtection: "true"                # 反浏览器调试
  time_range: "false"                    # 时间限定
  time_start: "20240118"                 # 起始时间
  time_end: "20240118"                   # 结束时间
  domainLock:                            # 域名锁定
    - "example.com"
  reservedNames: []                      # 保留关键字

🎯 多项目配置示例

场景1:不同项目使用不同 VIP 码

项目A配置 (projectA/jshaman.config.yaml):

# 项目A - 使用VIP码
vip_code: "1234-5678-9012-3456"
overwrite_after_obfuscate: false

项目B配置 (projectB/jshaman.config.yaml):

# 项目B - 免费模式
vip_code: "free"
overwrite_after_obfuscate: true

场景2:开发和生产使用不同配置

开发环境 (dev/jshaman.config.yaml):

# 开发环境配置 - 便于调试
vip_code: "your-vip-code"
overwrite_after_obfuscate: false
auto_close_on_complete: false  # 查看详细结果

obfuscate_options:
  compact: "false"              # 不压缩,便于阅读
  debugProtection: "false"      # 允许调试

生产环境 (prod/jshaman.config.yaml):

# 生产环境配置 - 高强度保护
vip_code: "your-vip-code"
overwrite_after_obfuscate: true
auto_close_on_complete: true   # 自动关闭

obfuscate_options:
  compact: "true"               # 压缩代码
  debugProtection: "true"       # 禁止调试
  controlFlowFlattening: "true" # 控制流平展

📊 使用效果

╔═══════════════════════════════════════════════════╗
║     JShaman JavaScript 混淆加密工具 v1.0.0         ║
║     https://github.com/nuomiaa/jshaman-script     ║
╚═══════════════════════════════════════════════════╝

发现项目配置文件:D:\project\jshaman.config.yaml
✓ 已加载项目配置
──────────────────────────────────────────────────
VIP码:免费模式 | 覆盖原文件:否 | 自动关闭:否
──────────────────────────────────────────────────

目标路径:D:\project\src
══════════════════════════════════════════════════

[app.js]
⠋ 🔐 正在对代码施加混淆魔法... (2.3s)
✓ 混淆完成 (3.5s) → app.obfuscated.js

[utils.js]
⠙ 🎭 让代码戴上神秘面具... (1.8s)
✓ 混淆完成 (2.1s) → utils.obfuscated.js

══════════════════════════════════════════════════
处理完成!成功 2 个,失败 0 个
══════════════════════════════════════════════════

按任意键继续...

🎨 加载动画效果

处理过程中会随机显示以下有趣的提示:

  • 🔐 正在对代码施加混淆魔法
  • 🎭 让代码戴上神秘面具
  • 🌀 代码炼金术进行中
  • 🛡️ 为代码披上保护铠甲
  • 🔮 召唤混淆精灵中
  • ✨ 编织代码迷宫
  • 🎪 代码变形术施展中
  • 🗝️ 锁定代码秘密
  • 🌟 注入混淆能量
  • 🎨 为代码涂上迷彩

⚙️ 高级配置说明

auto_close_on_complete 配置

控制执行完成后的行为:

  • false(默认):执行完成后显示"按任意键继续...",方便查看结果

    • 适合命令行手动执行
    • 方便查看详细的执行日志和统计信息
  • true:执行完成后自动关闭窗口

    • 适合右键菜单快速操作
    • 适合批处理脚本调用
    • 减少用户交互步骤

使用场景示例:

# 开发环境配置 - 方便查看详细信息
vip_code: "free"
auto_close_on_complete: false  # 需要查看结果

# 生产环境批处理配置 - 快速执行
vip_code: "your-vip-code"
auto_close_on_complete: true   # 自动关闭

🔧 注意事项

  1. 配置文件优先级:项目配置 > 默认配置
  2. 免费模式限制:VIP码设为 "free" 时,混淆参数配置无效
  3. 请求频率:批量处理时,每个文件间隔2秒,避免请求过快
  4. 文件备份:建议首次使用时设置 overwrite_after_obfuscate: false
  5. Git 管理:已创建 .gitignore 文件,自动忽略配置文件和混淆后的文件
  6. Emoji 表情:如果代码中包含 emoji 表情,因为加密会导致表情乱码

📝 更新日志

v1.0.0 (2025-10-11)

  • 🎉 首个正式版本发布
  • 🎨 新增炫酷旋转加载动画
  • 🎭 新增随机趣味提示语系统
  • ⏱️ 新增实时处理时间显示
  • ✨ 优化输出格式,更清晰简洁
  • 📄 添加 Apache-2.0 开源许可证
  • 🔧 改用异步 HTTPS 请求,支持加载动画
  • 📦 完善 package.json 项目信息
  • 📝 更新 README 文档
  • 🔗 添加 GitHub 仓库链接

📄 许可证

本项目采用 Apache License 2.0 开源许可证。

Copyright 2025 nuomiaa

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

🔗 相关链接

🙏 致谢

  • 感谢 JShaman.com 提供强大的 WebAPI 服务
  • 感谢所有贡献者和使用者的支持

About

基于 JShaman.com WebAPI 的 JavaScript 代码混淆加密工具,支持单文件和目录批量处理,支持添加右键菜单处理。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published