[破解] jsjiami混淆器 版本号破解

 「一个奇妙的Blog」

访客,您好
[破解] jsjiami混淆器 版本号破解


平时WinslowEric常用的一门编程语言是Javascript,由于JS代码是开源的,所以为了保护自己代码的安全性,WinslowEric经常会使用https://www.jsjiami.com/来混淆自己的JS代码,这个工具虽然基础功能是免费的,但是要自定义开头的版本号(不付费只有”jsjiami.com.v6″)就要VIP,WinslowEric穷,于是就对这个东西进行了一点研究

先来介绍一下这个工具,以及JS混淆是啥

众所周知,JS代码是完全开源可读的,但是通过JS混淆器,你可以让你的JS代码变得无法被直接阅读/理解,举个栗子,用sojson最高配置加密 console.log(“WinslowEric!”); 会变成

心 肺 骤 停

那么,今天破解的就是这玩意

穷人震怒

首先,先用最弱配置,随便写点最简单的代码

对console.log(“WinslowEric!”); alert(“WinslowEric!”);使用最弱配置混淆的结果如下:

存储版本号的变量为_0xodG,然后版本号就被存储到了_0x2c13[0]

对代码进行格式化

Aptana Studio还是不错的[图片经过剪裁]

很明显,_0x2c13数组内的东西都很重要

base64可以解密出一部分代码

前2个BASE64解密可以得到log和WinslowEric!,但是最后一个无法直接解密,中间的2个 .似乎在暗示着什么

没错,它就是加密过的版本号

WinslowEric接下来用console.trace和proxy疯狂追踪这个元素

ES7新东西,Proxy

一番追踪堆栈,来到了这里

trace堆栈
这是,正则!

虽然一番console.log失败了,但是很明显,这个正则有问题。

等等…这个正则怎么看起来有点简单???

这个正则除了删字符不是啥都做不了吗???

对比时间

原文
“密文”
正则

很明显可以看出,这个所谓的“密文”

其实只不过是在版本号中间随机插入了点字符,然后验证的时候用这个破正则匹配掉!

我当场就被震撼了!

直接“解密”

那么,很明显

要想不用VIP修改版本号

你只需要把自己要改的版本号替换进去,然后往里面随机插点东西,然后改那个地方的正则,让他们能够匹配成功就行了

示范

原文:Winslow.Eric

随便插点东西 Wineuszlo3w.EqricP

正则/[euz3qP]/g

正则效果
修改后的代码,版本号变成了Winslow.Eric
成功图

最后的最后,不知道sojson的站长能不能奖励我一个VIP(狗头)


标签:, ,
还没有评论