首页 > 其他分享 >JS代码加密:Eval的终极用法

JS代码加密:Eval的终极用法

时间:2023-03-10 21:32:23浏览次数:48  
标签:加密 copyright 代码 JS Eval var

Eval加密的终极用法

Eval加密,做为一种传统且古老的JS代码加密方法,相信很多人都知道。

例如这个在线Eval加密:

​https://www.fairysoftware.com/js_jia_mi_eval.html​

但这种Eval加密,其实并不能算真正的加密,只能算一种编码,可以被很容易的逆向得到原始代码。

但本文要介绍的,并非这种Eval加密。

而是借助Eval,并结合专业JS混淆加密所实现的,用这个方法加密得到的JS代码,安全强度非常高。

下面,进行演示:

例如一段JS代码:

function get_copyright(){

    var domain = "jshaman.com";

    var from_year = 2017;

    var copyright = "(c)" + from_year + "-" + (new Date).getFullYear() + "," + domain;

    return copyright;

}

console.log(get_copyright());

用jshaman(https://www.jshaman.com/)进行混淆加密:

JS代码加密:Eval的终极用法_字符串

得到如下加密代码:

JS代码加密:Eval的终极用法_js加密_02

如上图所示,虽然加密后的代码已经非常混乱。

但如果希望console、函数名也“消失”,则可以借且eval。

将原始代码改造成以下形式:

var str = `

function get_copyright(){

    var domain = "jshaman.com";

    var from_year = 2017;

    var copyright = "(c)" + from_year + "-" + (new Date).getFullYear() + "," + domain;

    return copyright;

}

console.log(get_copyright());

`

eval(str)

说明:将原来的代码整体做为字符串都包裹在了eval中执行。

再对上面的代码进行混淆加密:

JS代码加密:Eval的终极用法_字符串加密_03

加密生成了新的代码:

JS代码加密:Eval的终极用法_字符串_04

在新生成的代码中,console、函数名,都找不到了,原始代码的线索彻底消失。

因为在用JShaman混淆加密时,把原始代码整体当做字符串加密了,原本代码中的语法关键字、系统变量、函数名等等,全被加密了。

通常来说,直接用JShaman加密得到的JS代码,已可满足99%的需求。但如果遇到特别的场合、加密强度要求的极高,那么,可以用本文讲述的方法,对JS代码改造再进行混淆加密。但需注意:转成字符串的代码量不可太大。

标签:加密,copyright,代码,JS,Eval,var
From: https://blog.51cto.com/jsjiami/6113531

相关文章

  • JS中undefined和null的区别
    ●JavaScript真是一个特殊的语言,其他语言都只有一个表示"无"的值,比如Java语言用的是null,C语言用的是NULL,Python语言用的是None,Ruby语言用的是nil.......
  • Java对象List<对象>转JSON的异常
    @Data@Accessors(fluent=true)publicclassA{privateStringid;privateList<B>b;}@Data@Accessors(fluent=true)publicclassB{privateS......
  • 【希尔排序ShellSort算法详解】Java/Go/Python/JS/C不同语言实现
    【希尔排序算法详解】Java/Go/Python/JS/C不同语言实现 说明希尔排序(ShellSort)是插入排序的一种改进版,也称递减增量排序算法(DiminishingIncrementSort),其实质是将数......
  • js装饰器作用
    JavaScript装饰器(Decorator)是一种语法特性,可以用于修改类和类的属性或方法。它是ES2017引入的新特性,在Vue3和Angular等现代框架中广泛使用。装饰器可以让我们在不......
  • 如何通过Java程序加密或者解密PDF文档
    PDF文档加密是一种用于保护文件内容的功能。加密后的文档需要提供密码才能打开和查看。这一功能有效防止未经授权的访问、复制和修改PDF文件。FreeSpire.PDFforJava支......
  • Rxjs编程系列-基本概念
    Rxjs就是利用javascript实现了响应式编程的概念,利用监听流的模式处理异步操作。1.函数响应式编程函数式编程声明式纯函数数据不可变性响应式编程通过可监听流......
  • Rxjs编程系列-操作符
    定义:一个操作符是返回一个Observable对象的函数,不过,有的操作符是根据其他Observable对象产生返回的Observable对象,有的操作符则是利用其他类型输入产生返回的Observable......
  • Vue在js中的使用思考,非脚手架
    varvm=newVue({el:".container",//挂载点data:{},//数据决定了页面的样子|数据的响应式=>数据变了界面跟着变computed:{},//计算属性,惰性求值的......
  • 在JSP页面对一组数据进行判断之后输出
    需求:在合同信息管理页面做一个临期提醒功能,即在终止日期前一个月将该条记录显示在别处以提醒工作人员。实现思路:我在建表时多加了一项bool型数据,用来标记这项数据是否在一......
  • golang 自行实现一个base64加密
    packagemainimport( "fmt" "strconv")constbase64table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"funcMybase64(astring){......