GVKun编程网logo

解一个webpack打包后加密的JS代码(webpack js加密)

16

如果您对解一个webpack打包后加密的JS代码感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于解一个webpack打包后加密的JS代码的详细内容,我们还将为您解答webpa

如果您对解一个webpack打包后加密的JS代码感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于解一个webpack打包后加密的JS代码的详细内容,我们还将为您解答webpack js加密的相关问题,并且为您提供关于00-认识webpack - 为什么要模块化 -webpack打包过程、NodeJS代码webpack打包到html上使用的问题、react webpack打包后的文件(详细教程)、vue -webkit-box-orient: vertical webpack打包后被过滤掉了 线上没有这行代码的有价值信息。

本文目录一览:

解一个webpack打包后加密的JS代码(webpack js加密)

解一个webpack打包后加密的JS代码(webpack js加密)

源码过长,只贴部分加密的源代码如下

0x1fc9: function (_0x2715a2, _0x5a118b, _0x344094) {
        const _0x23ae3e = _0x344094(`611c`);

        class _0x2e9b72 {
            static [`getInstance`]() {
                if (''\x6f\x64\x74\x56\x66'' === `odtVf`) return new _0x23ae3e(); else {
                    function _0x2198cd() {
                        _0x12eae5[`log`](`ws\u8FDE\u63A5\u5931\u8D25`);
                        const _0x28aee6 = this;
                        _0x28aee6[`startWsCount`] < 0x5 ? (this[`$message`](''\u6b63\u5728\u542f\u52a8\x77\x73\u670d\u52a1\x2e\x2e\x2e''), _0x4bc899(function () {
                            _0x28aee6[`startWsCount`] += 0x1, _0x28aee6[`startWsCount`] >= 0x3 ? (_0x28aee6[`startWs`](), _0x28aee6[`startWsCount`] = 0x0) : _0x28aee6[`initWs`]();
                        }, 0x7d0)) : (_0x28aee6[`ws_tips`] = `ws\u5DF2\u5C1D\u8BD5\u542F\u52A8\u5931\u8D255\u6B21\uFF0C\u8BF7\u68C0\u67E5ws\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u5E38\uFF0C\u6216\u624B\u52A8\u542F\u52A8`, _0x3feb67(function () {
                            _0x28aee6[`not_start_ws`] = !0x0;
                        }, 0x7d0));
                    }
                }
            }
        }

        const _0x189052 = _0x2e9b72[`getInstance`]();
        _0x2715a2[`exports`] = _0x189052;
    }

我手动解密后如下

8137: function(ref, model, expt) {
    const encipher = expt(`611c`);

    class Encipher {
        static[`getInstance`]() {
            return new encipher();
        }
    }
    const exa = Encipher.getInstance();
    ref.exports = exa;
}

说一下解密思路

1.加密的源代码整体结构,只要是做过前端的,基本上一眼就可以看出来,这是经过webpack打包过的,然后经过了混淆加密变成了最终这个结构。PS:在把最外层的加密解开后,我发现里边除了webpack,可能还有用其他的加密代码先加密过一遍再用webpack打包的。

2.好了,现在先了解了这个源码的基本加密流程,我们开始着手解密。

3.先把源代码丢在线一键加密解密JS代码用一键解密功能先解一遍,得到如下代码。

0x1fc9: function(_0x2715a2, _0x5a118b, _0x344094) {
    const _0x23ae3e = _0x344094(`611c`);

    class _0x2e9b72 {
        static[`getInstance`]() {
            if (''odtVf'' === `odtVf`) return new _0x23ae3e();
            else {
                function _0x2198cd() {
                    _0x12eae5[`log`](`ws连接失败`);
                    const _0x28aee6 = this;
                    _0x28aee6[`startWsCount`] < 0x5 ? (this[`$message`](''正在启动ws服务...''), _0x4bc899(function() {
                        _0x28aee6[`startWsCount`] += 0x1, _0x28aee6[`startWsCount`] >= 0x3 ? (_0x28aee6[`startWs`](), _0x28aee6[`startWsCount`] = 0x0) : _0x28aee6[`initWs`]();
                    }, 0x7d0)) : (_0x28aee6[`ws_tips`] = `ws已尝试启动失败5次,请检查ws文件路径是否正常,或手动启动`, _0x3feb67(function() {
                        _0x28aee6[`not_start_ws`] = !0x0;
                    }, 0x7d0));
                }
            }
        }
    }

    const _0x189052 = _0x2e9b72[`getInstance`]();
    _0x2715a2[`exports`] = _0x189052;
}

4.由此可见,这段代码有用到websocket功能,这一小段是启动websocket服务的。

5.接下来就是我手工解密啦,没什么说的,按部就班就行。

6.最后得到的结果就是上边的了,在文章开头已经贴出来过了。

结语

对文章内容有疑问或者有建议的朋友欢迎在评论区说出来,或者使用私信功能给我留言。

或者到 jsjiami.com 官网底部有我联系方式。

00-认识webpack - 为什么要模块化 -webpack打包过程

00-认识webpack - 为什么要模块化 -webpack打包过程

webpack在不进行任何配置的情况下,他只认识js。

为什么要打包?

因为一个个小文件,我们合成一个,这样请求就只请求一次。

webpack除了打包之外,还具有翻译官的功能?

loader把浏览器看不懂的代码翻译成浏览器看的懂的代码。

 Plugin?

对文件做点别的事情

不管是loader 还是 plugin 都是可插拔,意思就是你什么时候想用,你就装进来,不想用,删掉。所以说webpack不仅强大,而且灵活。


 

为什么要模块化?模块化的好处?

 

 

 如上图,传统的一个页面去引入不同的js就是如上一个个去引入,但是这样会有命名冲突的问题,A.js 和B.js中可能有相同的变量命名。

解决方法:

在A.js中和B.js 中加上命名空间

 

 

命名空间会造成一些问题: 

 

 

 如上图,把这个autoLogin命名空间的模块暴露出去了,其实暴露的只是想让login 给别人用,但是全部都给别人了,如果别人误操作去 autoLogin.username = '张三', 不小心把username给改掉了,那么可能你login方法里去做的登录名和密码就永远也不符合了,这不符合开闭原则。

所以,单纯使用命名空间只是为了起到被覆盖,冲突的作用,但是并不能保证随意的访问和篡改,那么如何做呢?

我们用函数作用域,函数的闭包机制,保护里面的变量不被污染。也叫作模块作用域:暴露该暴露的,隐藏该隐藏的。

 

 

 如上图:这样利用闭包就保护了私有变量,又能只暴露我想暴露出去的这个方法。这样外面再去 :

 就拿不到里面的变量了。就不会被人篡改了。这就是所谓的开闭原则

 

 

 改写一个比较标准的模块化写法:

 

 

 上面的为什么要用一个对象包裹一下tell方法?不能直接赋值给susanModule吗?

 

 

 

 如图以上对比:就是给susanModule 让其为一个对象,对象是叫做tell,tell是个与value同名的key,以后调用的时候就是 susanModule.tell()


 

 综上:我们就可以得到模块化的优点:

1.作用域的封装 :模块内部的实现不会暴露在危险的全局作用域中,上面就是通过暴露tell接口,供外面使用。

2.重用性:如上面的,只需要执行susanModule.tell 就可以拿到这个方法

3.解除耦合 :如果把代码全部扔在一个文件中,出现BUG排查起来很难找,这样模块化后就容易找到定位到错误的模块。


 

 webpack打包原理和过程:

1.把你写的模块(js文件)中的每个逻辑代码块当做webpack一个自执行函数的入参(入参是一个数组,你写的这些代码逻辑块都会装到这个数组中)

 

第一步:

 

 

 第二步:把模块包装起来放入自执行函数中的数组(数组都是模块的入参)

 

 第三步:实现模块加载的方法,并把它放到模块执行的环境中,确保模块间可以相互调用。

 

1.首选去检查,你现在塞给我的这个模块啊我是不是已经加载过了,我去已加载模块的对象中去查这个id,发现已经加载过了,就不进行二次加载了,就直接把加载过的这个结果给你返回过来。

2.如果这个模块没有加载过,那我把其存到那个已加载的对象中,存的时候添加一个moduleId属性,就是给其做个记录

3.接着我就把他的this指到module.exports的导出结果上去,并且去执行已经包装好的模块逻辑。这一步就是让模块逻辑进行执行

4.最后把模块的返回值给return 出去。

第四步:把执行入口文件的逻辑放在一个函数表达式中,并立即执行这个函数(只的就是下面的这个外层的自执行函数)


 

NodeJS代码webpack打包到html上使用的问题

NodeJS代码webpack打包到html上使用的问题

nodejs代码test.js

function Student(name, age) {
    this.name = name;
    this.age = age;
}

module.exports = Student;

在另外一个hello.js文件里可以使用

var Student = require("./test");
exports.test = function() {
    var stu = new Student();
    stu.name = "Jack";
    stu.age = 20;
    console.log(stu.name);
}

但是用webpack打包test.js成main.js在html文件中引用,new Student()报错Uncaught ReferenceError: Student is not defined

<!DOCTYPE html>
<html>
    <head>
        <script src="./dist/main.js"></script>
        <script>
            
            new Student();
        </script>
    </head>
    </body>
</html>

 

react webpack打包后的文件(详细教程)

react webpack打包后的文件(详细教程)

下面我就为大家分享一篇利用cdn加速react webpack打包后的文件详解,具有很好的参考价值,希望对大家有所帮助。

此文不介绍webpack基本配置,如果对基本配置有疑问请查阅官方文档。

1、配置webpack.config.js

将output.publicPath改成上传到的cdn地址, 例(对应上面上传配置):

publicPath: "https://your_base_cdn_url" + process.env.NODE_ENV + "/cdn/"
登录后复制

打包

NODE_ENV=production node_modules/webpack/bin/webpack.js -p
登录后复制

这样打包后的文件例如有

index.html
12345678.src.js
12345678.src.css
...
登录后复制

此时,打包后生成的index.html文件中已经引入了cdn文件。

<html lang="en">
<head>
 <title>title</title>
 <link href="https://your_base_cdn_url/production/cdn/12345678.src.css" rel="external nofollow" rel="stylesheet">
</head>
<body id="body">
 <p id="root"></p>
<script src="https://your_base_cdn_url/production/cdn/12345678.src.js"></script></body>
</html>
登录后复制

2、上传文件至CDN

在部署脚本中写一段上传cdn的脚本, 例:

echo "start uploading to upyun"
HOST=v0.ftp.upyun.com
USER=uploader/your-username
PASS=your-password
cd build
files=$(ls | grep -v &#39;index.html&#39; | xargs)
ftp -inv $HOST <<EOF
user $USER $PASS
mkdir /$node_env/cdn
cd /$node_env/cdn
mput $files
bye
EOF
cd ..
echo "finish uploading to upyun"
登录后复制

将主页文件上传至服务器,使用nginx代理

server {
 listen 80;

 server_name your_server_name;
 access_log /var/log/nginx/your_project.log;
 root /var/www/your_project/production/current;

 location / {
 try_files $uri /index.html =404;
 add_header Pragma no-cache;
 expires -5y;
 }

 location ~ \.(js|css)$ {
 expires 360000;
 add_header Cache-Control "max-age=360000;";
 }
}
登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

利用cropper.js封装vue如何实现在线图片裁剪组件功能(详细教程)

使用vue-cli如何快速搭建单页应用以及所遇到的问题和一些解决办法

使用React中的Native实现图片查看组件

以上就是react webpack打包后的文件(详细教程)的详细内容,更多请关注php中文网其它相关文章!

vue -webkit-box-orient: vertical webpack打包后被过滤掉了 线上没有这行代码

vue -webkit-box-orient: vertical webpack打包后被过滤掉了 线上没有这行代码

 

(1)方法一:加上绿色注释,跳过webpack的css打包

.word-overflow-3{
  overflow:hidden;
  text-overflow:ellipsis;
  display:-webkit-box;
  /*! autoprefixer: off */
  -webkit-box-orient:vertical;
  /*! autoprefixer: on */
  -webkit-line-clamp:3;
}

 

(2)发放二:

1.找到配置文件/build/webpack.prod.conf.js文件,注释掉一下代码

new OptimizeCSSPlugin({
      cssProcessorOptions: config.build.productionSourceMap
        ? { safe: true, map: { inline: false } }
        : { safe: true }
    }),

2.在/build/utils.js文件里加上 minimize:true

const cssLoader = {
   loader: ''css-loader'',
   options: {
     sourceMap: options.sourceMap,
     minimize:true //加上这行
   }

 

关于解一个webpack打包后加密的JS代码webpack js加密的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于00-认识webpack - 为什么要模块化 -webpack打包过程、NodeJS代码webpack打包到html上使用的问题、react webpack打包后的文件(详细教程)、vue -webkit-box-orient: vertical webpack打包后被过滤掉了 线上没有这行代码的相关信息,请在本站寻找。

本文标签: