JavaScript Obfuscator

JavaScript 代码混淆工具
授权协议 BSD
开发语言 TypeScript
所属分类 开发工具、 代码混淆和加密
软件类型 开源软件
地区 不详
投 递 者 督宏旷
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

JavaScript Obfuscator 是一款功能强大的代码混淆器,能将原始代码混淆成可读性低的代码,看上去是难以阅读的代码不过具备和之前代码一样的功能,从而起到保护代码的作用。

特性

  • 重命名变量
  • 字符串提取和加密
  • 注入死代码
  • 控制流扁平化
  • 代码转换
  • ……

使用示例

var JavaScriptObfuscator = require('javascript-obfuscator');

var obfuscationResult = JavaScriptObfuscator.obfuscate(
    `
        (function(){
            var variable1 = '5' - 3;
            var variable2 = '5' + 3;
            var variable3 = '5' + - '2';
            var variable4 = ['10','10','10','10','10'].map(parseInt);
            var variable5 = 'foo ' + 1 + 1;
            console.log(variable1);
            console.log(variable2);
            console.log(variable3);
            console.log(variable4);
            console.log(variable5);
        })();
    `,
    {
        compact: false,
        controlFlowFlattening: true,
        controlFlowFlatteningThreshold: 1,
        numbersToExpressions: true,
        simplify: true,
        stringArrayShuffle: true,
        splitStrings: true,
        stringArrayThreshold: 1
    }
);

console.log(obfuscationResult.getObfuscatedCode());
/*
var _0x9947 = [
    'map',
    'log',
    'foo\x20',
    'bvmqO',
    '133039ViRMWR',
    'xPfLC',
    'ytpdx',
    '1243717qSZCyh',
    '2|7|4|6|9|',
    '1ErtbCr',
    '1608314VKvthn',
    '1ZRaFKN',
    'XBoAA',
    '423266kQOYHV',
    '3|0|5|8|1',
    '235064xPNdKe',
    '13RUDZfG',
    '157gNPQGm',
    '1639212MvnHZL',
    'rDjOa',
    'iBHph',
    '9926iRHoRl',
    'split'
];
function _0x33e4(_0x1809b5, _0x37ef6e) {
    return _0x33e4 = function (_0x338a69, _0x39ad79) {
        _0x338a69 = _0x338a69 - (0x1939 + -0xf * 0x1f3 + 0x1 * 0x469);
        var _0x2b223a = _0x9947[_0x338a69];
        return _0x2b223a;
    }, _0x33e4(_0x1809b5, _0x37ef6e);
}
(function (_0x431d87, _0x156c7f) {
    var _0x10cf6e = _0x33e4;
    while (!![]) {
        try {
            var _0x330ad1 = -parseInt(_0x10cf6e(0x6c)) * -parseInt(_0x10cf6e(0x6d)) + -parseInt(_0x10cf6e(0x74)) * -parseInt(_0x10cf6e(0x78)) + parseInt(_0x10cf6e(0x6a)) + -parseInt(_0x10cf6e(0x70)) + parseInt(_0x10cf6e(0x6e)) * -parseInt(_0x10cf6e(0x75)) + parseInt(_0x10cf6e(0x72)) + -parseInt(_0x10cf6e(0x67)) * parseInt(_0x10cf6e(0x73));
            if (_0x330ad1 === _0x156c7f)
                break;
            else
                _0x431d87['push'](_0x431d87['shift']());
        } catch (_0x9f878) {
            _0x431d87['push'](_0x431d87['shift']());
        }
    }
}(_0x9947, -0xb6270 + 0x4dfd2 * 0x2 + 0x75460 * 0x2), function () {
    var _0x1f346d = _0x33e4, _0x860db8 = {
            'ytpdx': _0x1f346d(0x6b) + _0x1f346d(0x71),
            'bvmqO': function (_0x560787, _0x519b9e) {
                return _0x560787 - _0x519b9e;
            },
            'rDjOa': function (_0x4501fe, _0x2b07a3) {
                return _0x4501fe + _0x2b07a3;
            },
            'xPfLC': function (_0x5f3c9b, _0x434936) {
                return _0x5f3c9b + _0x434936;
            },
            'XBoAA': function (_0x535b8a, _0x42eef4) {
                return _0x535b8a + _0x42eef4;
            },
            'iBHph': _0x1f346d(0x65)
        }, _0x346c55 = _0x860db8[_0x1f346d(0x69)][_0x1f346d(0x79)]('|'), _0x3bf817 = 0x4bb * 0x1 + 0x801 + -0xcbc;
    while (!![]) {
        switch (_0x346c55[_0x3bf817++]) {
        case '0':
            console[_0x1f346d(0x7b)](_0x4c96d8);
            continue;
        case '1':
            console[_0x1f346d(0x7b)](_0x101028);
            continue;
        case '2':
            var _0x65977d = _0x860db8[_0x1f346d(0x66)]('5', -0x586 + -0x2195 + -0x6 * -0x685);
            continue;
        case '3':
            console[_0x1f346d(0x7b)](_0x65977d);
            continue;
        case '4':
            var _0x56d39b = _0x860db8[_0x1f346d(0x76)]('5', -'2');
            continue;
        case '5':
            console[_0x1f346d(0x7b)](_0x56d39b);
            continue;
        case '6':
            var _0x544285 = [
                '10',
                '10',
                '10',
                '10',
                '10'
            ][_0x1f346d(0x7a)](parseInt);
            continue;
        case '7':
            var _0x4c96d8 = _0x860db8[_0x1f346d(0x68)]('5', 0x622 * -0x6 + 0x4a * 0x3 + 0x1 * 0x23f1);
            continue;
        case '8':
            console[_0x1f346d(0x7b)](_0x544285);
            continue;
        case '9':
            var _0x101028 = _0x860db8[_0x1f346d(0x6f)](_0x860db8[_0x1f346d(0x6f)](_0x860db8[_0x1f346d(0x77)], 0x6fb * 0x5 + 0x1ebf * 0x1 + -0x41a5), 0x209 * 0xa + 0x1314 + -0x276d);
            continue;
        }
        break;
    }
}());
*/
  • javascript-obfuscator是一个免费的JavaScript代码混淆工具,它功能强大,可以把你的源代码变得“面目全非”,完全没有可读性。还具有部分防调试功能,给JavaScript代码多一层保护。 安装 它支持很多流行的前端打包工具,如Webpack、Gulp、Grunt等都有相应的插件。本文为保持简单,以单独的命令行版本示例。 以Windows环境为例,首先安装Node.js环境,

  • javascript-obfuscator是一个免费的JavaScript代码混淆工具,它功能强大,可以把你的源代码变得“面目全非”,完全没有可读性。还具有部分防调试功能,给JavaScript代码多一层保护。 安装 它支持很多流行的前端打包工具,如Webpack、Gulp、Grunt等都有相应的插件。本文为保持简单,以单独的命令行版本示例。 以Windows环境为例,首先安装Node.js环境,

  • 引言: 前端代码是直接暴漏在浏览器中的,很多web攻击都是通过直接debug业务逻辑找到漏洞进行攻击,另外还有些喜欢“不劳而获”的分子暴力盗取他人网页简单修改后用来获利,总体上来说就是前端的逻辑太容易读懂了,本文主要基于JavaScript Obfuscator介绍一下前端混淆的基本思路。 一、JavaScript Obfuscator简介:   JavaScript Obfuscator是Tim

  • 引言: 前端代码是直接暴漏在浏览器中的,很多web攻击都是通过直接debug业务逻辑找到漏洞进行攻击,另外还有些喜欢“不劳而获”的分子暴力盗取他人网页简单修改后用来获利,总体上来说就是前端的逻辑太容易读懂了,本文主要基于JavaScript Obfuscator介绍一下前端混淆的基本思路。 一、JavaScript Obfuscator简介:   JavaScript Obfuscator是Tim

  • 之前系列中的 花指令和控制流平坦化 ,其中的控制流的变化似乎不大,但是死代码注入这个似乎是进行了较大的升级。 deadCodeInjection Type: boolean Default: false ⚠️ Dramatically increases size of obfuscated code (up to 200%), use only if size of obfuscated cod

  • 问题 有一个 Vue2 的组件项目,在webpack中使用 javascript-obfuscator 对打包文件进行加密输出;另一个项目,需要依赖该组件,引入加密后的打包输出文件,直接报错 Uncaught Error: Cannot find module "."。而引入没有经过加密的打包输出文件,则可以正常使用。 版本信息: webpack:4.14.0, webpack-obfuscato

  • 1.简介 JavaScript Obfuscator 是一款功能强大的免费 JavaScript 混淆器,包含多种功能,能将代码混淆成可读性低的代码,看上去是难以阅读的代码,其实具备和之前代码一样的功能,从而起到保护代码的作用。 2.安装 作者尝试在nodejs12,nodejs14下都提示错误,最后在nodejs16.14.0下,安装成功(全局)。安装命令如下: npm install -g j

  • 记录学习JavaScript obfuscator中文帮助文档 转载:混淆工具JavaScript obfuscator中文帮助文档.

  • 官网: https://www.npmjs.com/package/javascript-obfuscator 全局安装: npm install --save-dev javascript-obfuscator 默认不用参数的加密直接执行也可以 javascript-obfuscator input.js --output output.js 使用部分自定义参数 javascript-obfus

 相关资料
  • 问题内容: 是否有对Java混淆代码进行反混淆的工具? 这些代码是从编译的类中提取的,但是它们被混淆并且不可读。 问题答案: 您是否尝试过使用Java Deobfuscator(又名JDO) (一种智能反编译器)来减少代码的晦涩感? 目前,JDO执行以下操作: 将混淆的方法,变量,常量和类名重命名为唯一的,并更能指示其类型 在整个源代码树(测试版)中传播更改 具有易于使用的GUI 允许您指定字段,

  • 问题内容: 如何快速混淆代码。我有一个非常小的 Java App ,我想将混淆的代码交付给客户端。我听说过很多有关 ProGuard 混淆代码并下载的信息,但不知道如何混淆我的“ abc.jar”文件。 我检查了它的网站,但其中包含许多要阅读的材料。我不需要沉迷。我只需要简单地将变量,方法和类的名称更改为一些不可读的名称即可。我知道ProGuard还提供所有其他功能。 Q1。 因此,谁能告诉我一些

  • 问题内容: 我正在做一个登录页面。我有UITextField作为密码。 显然,我不希望看到密码。相反,我希望键入时显示圆圈。您如何设置发生这种情况的领域? 问题答案: 请将您的UItextField属性设置为安全。 试试这个.. textFieldSecure是您的UITextField …

  • 本文向大家介绍Android 混淆代码详解及实例,包括了Android 混淆代码详解及实例的使用技巧和注意事项,需要的朋友参考一下 为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过

  • 本文向大家介绍Android应用开发之代码混淆,包括了Android应用开发之代码混淆的使用技巧和注意事项,需要的朋友参考一下 混淆器(ProGuard) 混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行逆向project。因此,当你的应用程序对安全敏感(要求高),比如当你授权应用程序的时候,混淆器是一种重

  • 问题内容: 我正在寻找如何隐藏我的Python源代码。 如何编码此示例,以使它不易阅读?有人告诉我使用base64,但不知道如何使用。 问题答案: 这只是一个有限的第一层混淆解决方案,但是它是内置的:Python有一个编译器来对字节码进行编码: 生成一个包含字节码的文件,并删除其中的文档字符串,等等。您可以使用.py扩展名重命名该文件,并且可以像程序一样运行,但不包含源代码。 PS:您获得的“有限

  • 在proguard-project.txt中使用-keep类org.xbill.**{*;}似乎不能解决这个问题。

  • 我的困惑是wile创建镜像主机端口在Dockerfile中被指定为8080,但当从同一个镜像主机端口运行容器时,被指定为3000。那么这个容器将在哪个主机端口运行,为什么?