javascript代码混淆的原理
如何对JavaScript进行保护
代码压缩:
- 去除空格
- 换行等
代码加密:
eval
- eval可以将其中的参数按照JavaScript的的语法进行解析并执行,其实就是将JavaScript的代码变成了eval的参数其中的一些字符会被按照特定的编码
- 可以使用eval加密的网站进行加密
http://www.jqueryfuns.com/tools/jsencode 加密前:console.log("hello") 加密后:eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'^$'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('console.log("hello")',[],1,''.split('|'),0,{}))
- 因为可以将加密后的代码直接输出到控制台,所以这种加密方法是非常弱的
Emscripten
- Emscripten是一个用于编译的工具链asm.js公司使用LLVM构建的WebAssembly可以让你在没有插件的情况下,在网络上运行C和C++。
- 核心:C/C++
- 编译:Emscripten
- 结果:asm.js
调用:JavaScript
- 就是一些核心的功能可以使用c或者c++来实现,然后通过Emscripten编译器来生成asm.js文件,然后就可以在浏览器里调用,就可以实现它的执行了,所以可以起到保护核心逻辑的功能了。
WebAssembly等
- 核心:C/C++
- 结果:wasm文件(字节码文件)运行速度会更快,体积会更小
- 调用:JavaScript
代码混淆:
- 变量混淆(将变量名变成一些无意义的可以来较乱的字符串(16进制)降低代码的可读性)
- 字符串混淆(进行加密或者是编码,目的:确保代码里面,不可以使用搜索的方式来查到原始的字符串)
- 属性加密(JavaScript里面有一些Object,可能是一些键值对,所以可以把对象进行加密的转换,就是把key-value的映射关系混淆掉)
- 控制流扁平化(打乱原有的代码的执行流程)
- 僵尸代码注入(将一些无用的代码注入到我们的代码中,实现扰乱)
- 代码压缩(去除空格回车调试语句等等)
- 反调试 (无限debug、定时debug、debugger关键字)
- 多态变异(JavaScript一旦被调用,代码就变成和原来完全不同的代码,但是保证功能完全不变,避免代码被动态的分析调试)
- 锁定域名
- 反格式化
- 特殊编码
javascript代码混淆的原理相关推荐
- 前端JavaScript代码混淆加密原理介绍
因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...
- 几维安全Javascript代码混淆(js加密)在线使用说明
2019独角兽企业重金招聘Python工程师标准>>> 几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆.字 ...
- 代码混淆的原理是什么?常见代码混淆方法介绍
移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者一般都会进行代码混淆保护.本文主要介绍了代码混淆的原理.方法.以及 ...
- javascript代码混淆与加解密
开发一个python的程序,功能很简单,对某个网页发送post请求,把response的结果解析后存入数据库,供后续分析. 抓包 首先是抓包,使用burp suite,发现该网页原始的post请求如下 ...
- JavaScript代码混淆加密
www.safekodo.com 众所周知,JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制 ...
- JavaScript 代码混淆实战(七)|逗号表达式的混淆
著名的5s盾,对js代码进行了大量的混淆,其第一层js代码中,逗号表达式非常的多.研究后,我自己也搞了几个简单的实例来生成逗号表达式,感觉其实所谓的混淆也挺简单的. 一.插件名称 逗号表达式混淆. 二 ...
- Android代码混淆及反编译apk
序言: 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版
好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版 书法字体2017.06.23css压缩 分享一款好用的JS混淆加密工具:HDS JSObfuscator ...
- Java 压缩/混淆 JavaScript 代码
基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少.我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便.虽然咱们可以外部调用 node 等专 ...
最新文章
- 制造业采购审批流程设计示例
- Docker Compose基本介绍
- 【网络安全】一个堆题inndy_notepad的练习笔记
- iOS之深入解析alloc、init与new的底层原理
- urllib 模块学习
- 判断手机浏览器还是桌面浏览器
- 【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)
- 第一章: 新的结构化元素
- java中如何声明班干部,java类成员变量的定义和声明
- 【Flink】Pending record count must be zero at this point : 1
- 这次要说不明白 immutable 类,我就怎么地!
- JSP脚本元素(声明 %! 表达式 %= 脚本 %)
- 剑指offer【书】之简历抒写
- 解析bt种子下载 java_使用Java解析Torrent文件(BT种子),基于使用Eclipse ECF中的org.eclipse.bittorrent方案...
- AB测试平台的工程实现
- 北洋降舰之鱼雷艇队 ZT
- solr 查询出异常org.apache.solr.search.SyntaxError: Cannot parse
- 1.7 URL与端点
- 40套各种风格游戏行业网站html5模板wap手机游戏资讯网站模板游戏动漫设计公司html模板游戏公司网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应
- 十大数据爱好者必备书籍