神秘的Javascript混淆法,从前有个程序员大神, 运用了javascript的语法特性创造了一个js混淆方法,这个名字在日本叫做“jjfucker”..没错,大神都不知道这个玩意儿怎么做的,很烦恼就取名了f**k。
后面还有很长一大串。
嗯,就先搜索一下js混淆方法吧
JS代码混淆技术
JS代码混淆技术可以将JavaScript代码转换成一个新的代码形式,使其难以理解和破解。这种转换通常包括将变量名和函数名替换为无意义的字符、删除代码中的空白和注释、将多行代码压缩成一行等操作。混淆后的代码和原代码在功能上是等效的,但是由于其结构和命名被混淆,甚至看起来无法读懂。
防止爬虫通过分析js内容,轻易的还原出网站的加密逻辑,而做出的安全防御手段之一,常常将一个逻辑简单的可能十几行算法代码思路,通过变量混淆替换、增加冗余无效代码、增加无限debugger反调试功能、增加多层的套娃式if~else代码、以及埋陷阱等混淆成几千行的js代码
JavaScript混淆_js混淆-CSDN博客
好吧,不知道怎么弄
额,是 fuck 混淆
from unjsfuck import *
s = '''l[!+[]+!+[]+!+[]+!+[]+[+[]]] .......'''
v = unjsfuck(s)
print(v)
也有几处没解出来
以及不能显示负数,还有引号
正常是-12
解决方法用replace替换下就行(能用就行.jpg)
from unjsfuck import *
s = '''l[!+[]+!+[]+!+[]+!+[]+[+[]]] .......'''
strlist = s.split("&&") #分割
for i in strlist:t = i.split("==") #分割# print("s.add(",unjsfuck(t[0]).replace("'",""),"==",unjsfuck(t[1]).replace("'","").replace("+",""),")")t0 = t[0].split("-") #由于不能显示负数,所以负号也要分割一下for j in range(len(t0)):print(unjsfuck(t0[j]).replace("'",""),end="")if j != len(t0) - 1 :print("-",end="")print("==",unjsfuck(t[1]).replace("'","").replace("+",""))
脚本有点问题
还有直接写js脚本的
BUUCTF--equation-CSDN博客
还有使用Google Closure Compiler
直接对js进行了压缩。
嗯,js逆向遇到的算是很少的,主要那两个脚本应该学学其思路。