专业编程基础技术教程

网站首页 > 基础教程 正文

JavaScript奇技淫巧:32进制加密

ccvgpt 2024-12-03 11:02:29 基础教程 1 ℃

JavaScript奇技淫巧:32进制加密

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

JavaScript奇技淫巧:32进制加密

但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==")]("jshaman.com");


本文节选自开源电子书《JavaScript奇技淫巧》,下载地址:

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

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

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

JavaScript奇技淫巧:防删水印	1
JavaScript奇技淫巧:图片加密	5
JavaScript奇技淫巧:复制陷阱	12
JavaScript奇技淫巧:禁止页面分析	15
JavaScript奇技淫巧:Html加密	17
JavaScript奇技淫巧:隐秘执行	22
JavaScript奇技淫巧:Hook与反Hook	26
JavaScript奇技淫巧:链接劫持	31
JavaScript奇技淫巧:揭秘jjencode	35
JavaScript奇技淫巧:Ajax拦截	40
JavaScript奇技淫巧:无效断点	48
JavaScript奇技淫巧:时间密码	53
JavaScript奇技淫巧:设备指纹	58
JavaScript奇技淫巧:AST解释器	62
JavaScript奇技淫巧:隐写术	70
JavaScript奇技淫巧:隐形字符	77
JavaScript奇技淫巧:数值的7种写法	81
JavaScript奇技淫巧:详解Eval加密	88
JavaScript奇技淫巧:禁止后退	96
JavaScript奇技淫巧:加密反调试	98
JavaScript奇技淫巧:花样赋值	103
JavaScript奇技淫巧:Eval的未公开用法	107
JavaScript奇技淫巧:终极Eval加密	109
JavaScript奇技淫巧:自动下载	112
JavaScript奇技淫巧:防复制	115
JavaScript奇技淫巧:从词法分析到混淆加密	122
JavaScript奇技淫巧:操控URL	131
JavaScript奇技淫巧:彩色命令行	133
JavaScript奇技淫巧:变速齿轮	139
JavaScript奇技淫巧:按键精灵	144
JavaScript奇技淫巧:6种alert	150
JavaScript奇技淫巧:try&catch加密	155
JavaScript奇技淫巧:代码压缩&加密	159
JavaScript奇技淫巧:加密字库	162
JavaScript奇技淫巧:网站防火墙	173
JavaScript奇技淫巧:Lisp 2 JS	177
JavaScript奇技淫巧:混淆加密技术探究	190
JavaScript奇技淫巧:清理无效代码	227
JavaScript奇技淫巧:debugger拦截	229
JavaScript奇技淫巧:执行“二进制”代码	234
JavaScript奇技淫巧:32进制加密 237
等... ... 

Tags:

最近发表
标签列表