网站首页 > 基础教程 正文
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==")]("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
等... ...
猜你喜欢
- 2024-12-03 《深入理解javascript原型和闭包系列》 知识点整理
- 2024-12-03 Pyodide:将 Python 引入浏览器
- 2024-12-03 盘点全网最火的 10+ JavaScript引擎!QuickJS 只是其一!
- 2024-12-03 人均瑞数系列,瑞数 5 代 JS 逆向分析
- 2024-12-03 JavaScript黑科技:隐秘执行
- 2024-12-03 深入理解javascript--笔记
- 2024-12-03 Python爬虫教程:JS逆向之某团美食商铺数据获取
- 2024-12-03 利用Python突破大型网站JavaScript反爬虫加密技术
- 2024-12-03 Eval加密的终极用法
- 2024-12-03 渗透技巧|当爆破遇到JS加密
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)