QQ个性网:专注于分享免费的QQ个性内容

关于我们| 网站公告| 广告服务| 联系我们| 网站地图

搜索
编程 JavaScript Java C++ Python SQL C Io ML COBOL Racket APL OCaml ABC Sed Bash Visual Basic Modula-2 Logo Delphi IDL Groovy Julia REXX Chapel X10 Forth Eiffel C# Go Rust PHP Swift Kotlin R Dart Perl Ruby TypeScript MATLAB Shell Lua Scala Objective-C F# Haskell Elixir Lisp Prolog Ada Fortran Erlang Scheme Smalltalk ABAP D ActionScript Tcl AWK IDL J PostScript IDL PL/SQL PowerShell

JavaScript奇技淫巧:32进制加密

日期:2025/04/06 21:47来源:未知 人气:52

导读:JavaScript奇技淫巧:32进制加密在JavaScript编程中,eval常用于保护隐私、加密代码运行,执行一些不想为他人所知的代码,如常见的eval加密、U加密、JJEncode加密,都是使用eval进行代码执行。但eval本身字符串是个非常明显的特征,太容易被检索,然后替换成console.log、alert,从而实现逆向、得到eval执行的内容。是否有方法可以将ev......

JavaScript奇技淫巧:32进制加密

在JavaScript编程中,eval常用于保护隐私、加密代码运行,执行一些不想为他人所知的代码,如常见的eval加密、U加密、JJEncode加密,都是使用eval进行代码执行。

但eval本身字符串是个非常明显的特征,太容易被检索,然后替换成console.log、alert,从而实现逆向、得到eval执行的内容。

是否有方法可以将eval也隐藏起来,使它不那么轻易被发现?

当然有,下面便介绍一种方法:32进制加密。

原理如下:

eval在浏览器中,是window的成员函数

;在Node.JS环境中,是global的成员函数。

那么,eval便也可以写为:window.eval、global.eval,或window[“eval”]、global[“eval”]。

也就是将eval变成了字符串的形式。

既然是字符串,就很容易加密了。

例如,“eval”字符串可以成为另一种形式:

(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)

或者,为避免加密后也有统一特征,可以将toString的数值也做改动,如14改为10+1+3等:

window[(10+1+3).toString(32)+(20+1+10).toString(32)+(10).toString(32)+(21).toString(32)]

这是使用toString(进制)方法将一个数字转换为指定进制的字符串表示,在上面的例子代码中,进制是32,这意味着数字会被转换成32进制

的字符串。

(14).toString(32):数字14转换为32进制,即 "e"。

(31).toString(32):数字31转换为32进制为 "v"。

(10).toString(32):数字10转换为32进制为 "a"。

(21).toString(32):数字21转换为32进制 "l"。

把他们用加号连接起来,便形成了字符串“eval”。

更多的32进制字符对应关系:

a: (10).toString(32) -> "a"b: (11).toString(32) -> "b"c: (12).toString(32) -> "c"d: (13).toString(32) -> "d"e: (14).toString(32) -> "e"f: (15).toString(32) -> "f"g: (16).toString(32) -> "g"h: (17).toString(32) -> "h"i: (18).toString(32) -> "i"j: (19).toString(32) -> "j"k: (20).toString(32) -> "k"l: (21).toString(32) -> "l"m: (22).toString(32) -> "m"n: (23).toString(32) -> "n"o: (24).toString(32) -> "o"p: (25).toString(32) -> "p"q: (26).toString(32) -> "q"r: (27).toString(32) -> "r"s: (28).toString(32) -> "s"t: (29).toString(32) -> "t"u: (30).toString(32) -> "u"v: (31).toString(32) -> "v"

当然,除此之外,还可以用其它的算法,

比如,在浏览器中,base64字符串“ZXZhbA==”用atob解码也可得到“eval”:

扩展的思考,这个方法,除了可用于隐藏eval,当然也可以隐藏其它的方法。比如:

window(10).toString(32)+(21).toString(32)+(14).toString(32)+(27).toString(32)+atob("dA==");

本文节选自开源电子书《JavaScript奇技淫巧》。

https://github.com/w2sft/JavaScript-diabolic-tricks-and-wicked-craft

《JavaScript奇技淫巧》又名:《JavaScript-diabolic-tricks-and-wicked-craft》

『奇技淫巧』一词出自古籍《书·泰誓下》,指新奇的技艺和作品。 此词意与本书内容十分契合,因此书名借用该词。本书向您分享一系列新奇、有趣、有技术含量的,特别是很多侧重于代码安全、混淆加密的JavaScript编程技术,十分推荐JavaScript程序员阅读。

本书尚在持续更新中...如您有任何建议或意见,请与我联系。

JavaScript奇技淫巧:防删水印 1JavaScript奇技淫巧:图片加密 5JavaScript奇技淫巧:复制陷阱 12JavaScript奇技淫巧:禁止页面分析 15JavaScript奇技淫巧:Html加密 17JavaScript奇技淫巧:隐秘执行 22JavaScript奇技淫巧:Hook与反Hook 26JavaScript奇技淫巧:链接劫持 31JavaScript奇技淫巧:揭秘jjencode 35JavaScript奇技淫巧:Ajax拦截 40JavaScript奇技淫巧:无效断点 48JavaScript奇技淫巧:时间密码 53JavaScript奇技淫巧:设备指纹 58JavaScript奇技淫巧:AST解释器 62JavaScript奇技淫巧:隐写术

70JavaScript奇技淫巧:隐形字符 77JavaScript奇技淫巧:数值的7种写法 81JavaScript奇技淫巧:详解Eval加密 88JavaScript奇技淫巧:禁止后退 96JavaScript奇技淫巧:加密反调试 98JavaScript奇技淫巧:花样赋值 103JavaScript奇技淫巧:Eval的未公开用法 107JavaScript奇技淫巧:终极Eval加密 109JavaScript奇技淫巧:自动下载 112JavaScript奇技淫巧:防复制 115JavaScript奇技淫巧:从词法分析

到混淆加密 122JavaScript奇技淫巧:操控URL 131JavaScript奇技淫巧:彩色命令行 133JavaScript奇技淫巧:变速齿轮 139JavaScript奇技淫巧:按键精灵

144JavaScript奇技淫巧:6种alert 150JavaScript奇技淫巧:try&catch加密 155JavaScript奇技淫巧:代码压缩&加密 159JavaScript奇技淫巧:加密字库 162JavaScript奇技淫巧:网站防火墙 173JavaScript奇技淫巧:Lisp 2 JS 177JavaScript奇技淫巧:混淆加密技术

探究 190JavaScript奇技淫巧:清理无效代码 227JavaScript奇技淫巧:debugger拦截 229JavaScript奇技淫巧:执行“二进制”代码 234JavaScript奇技淫巧:32进制加密 237等... ...

关于我们|网站公告|广告服务|联系我们| 网站地图

Copyright © 2002-2023 某某QQ个性网 版权所有 | 备案号:粤ICP备xxxxxxxx号

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告