专业的JavaScript混淆加密:JShaman

专业的JavaScript混淆加密:JShaman

JShaman轻量版功能详解

简介

JShaman轻量版是JShaman.com研发的专业JavaScript代码混淆加密产品,为平台形式。

具有保护效果强大、功能稳定、开放WebAPI、全自主技术等特点。

功能

JShaman轻量版目前具有18项混淆加密功能。

完整启用各功能时,保护效果如下所示:

保护前的代码:

配置:

保护结果:

以下给出各混淆加密项目的单独说明及保护效果。

  1. 局部变量名、函数名混淆

可对局部变量名称进行变形,赋以无意义、不规律的名称。效果如下:

保护前:

配置:

保护后:

  1. 全局变量名混淆、全局函数名混淆

与上相信,区别在于之前是针对局部变量,此处可处理全局变量。效果如下:

保护前:

配置:

保护结果:

  1. 成员函数加密

可对JavaScript内置语法方法进行加密,如console.log()中的log函数。

效果如下:

保护前:

配置:

保护结果:

  1. 数值常量加密

将数值常量变为运算表达式,效果如下:

保护前:

配置:

保护后:

  1. 二进制表达式混淆

将二进制表达式变形为函数调用表达式,效果如下:

保护前:

配置:

保护结果:

  1. 布尔型数值加密

对true、false值进行加密,效果如下:

保护前:

配置:

保护后:

  1. 字符串Unicode化加密

效果如下:

保护前:

配置:

保护结果:

  1. Eval加密

对特定的语句进行Eval加密,效果如下:

保护前:

配置:

保护结果:

  1. 平展控制流

将函数中代码平坦化,并打乱代码显示顺序,效果如下:

保护前:

配置:

保护结果:

  1. 收缩控制流

将函数中符合条件的多行代码收缩为单行,形成逗号运算符语法,效果如下:

保护前:

配置:

保护后:

  1. 字符串阵列化

将代码中包含的字字符串集中放置到数组,效果如下:

保护前:

配置:

保护结果:

  1. 阵列字符串加密

字符串阵列化后生效,将阵列中的字符串内容进行加密,效果如下:

保护前:

配置:

保护结果:

  1. 虚拟机执行保护

将某些代码转为虚拟机OP指令,在虚拟机中执行,效果如下:

保护前:

配置:

保护结果:

  1. 代码压缩

去除回车换行、空格,压缩代码体积。效果如下:

压缩前:

压缩后:

  1. 反格式化

需要与代码压缩同时使用,如以下保护后的代码:

如果此代码被美化、格式化,将无法运行:

  1. 保留注释

默认保护后,会清除掉代码中所有注释语句,如需保留注释,则使用此项。

  1. 保留关键字

对指定名称的字符串、函数名、变量名不进行保护,效果如下:

保护前:

如不使用保留字功能,勾选以下选项:

保护结果:

如果选择保留关键字,并填入“abc”:

则保护结果成为:

注:保留字最多可设置255个。

### 对 Vue 脚手架项目进行代码混淆加密的方法 #### 使用 `webpack-obfuscator` 插件 为了增强项目的安全性并防止源代码泄露,在 Vue CLI 中可以利用 `webpack-obfuscator` 插件来进行代码混淆加密。安装此插件可以通过 npm 或 yarn 完成。 ```bash npm install --save-dev webpack-obfuscator ``` 或者 ```bash yarn add --dev webpack-obfuscator ``` 接着,修改 `vue.config.js` 文件以集成该插件: ```javascript const WebpackObfuscator = require('webpack-obfuscator'); module.exports = { configureWebpack: { plugins: [ new WebpackObfuscator({ rotateStringArray: true, }, []) ] } }; ``` 上述配置会启用字符串数组旋转功能,从而增加反向工程的难度[^1]。 #### 利用 JShaman 进行在线混淆加密 对于那些希望采用更简便方式处理的小型项目来说,也可以考虑使用 JShaman 工具来完成 JavaScript混淆加密工作。只需上传待处理文件至平台,设置好所需参数之后按下“开始混淆加密”,即可获取到经过保护的新版本代码片段[^2]。 需要注意的是,尽管这种方式简单快捷,但对于大型应用而言可能不够灵活高效;而且由于涉及第三方服务,因此可能存在一定的隐私风险。 #### 结合 Terser 和 Obfuscator 实现全面优化 如果追求更高的性能以及更好的安全性,则可以在构建过程中同时引入压缩工具(如Terser)与混淆器。这不仅能够减少最终打包体积,还能有效提升加载速度的同时提供额外的安全保障。 在 package.json 添加依赖项: ```json { "dependencies": {}, "devDependencies": { "terser-webpack-plugin": "^4.2.2", "webpack-obfuscator": "^2.6.0" } } ``` 随后调整 vue.config.js 来确保两者协同运作良好: ```javascript const TerserPlugin = require('terser-webpack-plugin'); const WebpackObfuscator = require('webpack-obfuscator'); module.exports = { productionSourceMap: false, // 关闭生产环境下的 source map 生成功能 chainWebpack: config => { config.optimization.minimize(true); config.plugin('obfuscate').use(WebpackObfuscator).init(() => ({ compact: true, controlFlowFlattening: true, deadCodeInjection: true, debugProtection: false, identifierNamesGenerator: 'mangled', renameGlobals: false, stringArrayEncoding: ['base64'], transformObjectKeys: true, ... })); config.optimization.minimizer('terser') .use(TerserPlugin,{ terserOptions: { compress: {}, mangle: {} }, }); } }; ``` 通过这样的组合拳策略,既实现了高效的资源管理和分发,又加强了应用程序的整体防护水平[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值