JS字符串32进制加密
主要用于JS关键字加密,如Eval加密形式为:(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)
原理:eval在浏览器中,是window的成员函数;在Node.JS环境中,是global的成员函数。
所以,eval便也可以写为:window.eval、global.eval,或window["eval"]、global["eval"]。
结合上述32进制加密思路,
window["eval"]便可以变成:
window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]
global["eval"]可以变成:
global[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]
这样就隐藏了eval关键字。
所以,这种加密方式主要可用于“关键字”隐藏。
另外,如果加密一个“非关键字”字符串,比如:“var a;”得到:“(31).toString(32)+(10).toString(32)+(27).toString(32)+" "+(10).toString(32)+";"”,可以再用eval或立即函数执行执行它,便可隐秘的定义一个变量a。
TIP:手动用此方式加密关键字之后的JS代码,再用 JShaman.com、 JsJiami.online 进行JS混淆加密,整体效果更好。
eval(alert(1)),将alert(1)进行32进制加密得到:
eval((10).toString(32)+(21).toString(32)+(14).toString(32)+(27).toString(32)+(29).toString(32)+"("+"1"+")")
window["eval"](alert(1))将eval、alert(1)分别进行32进制加密得到:
window[(14).toString(32)+(31).toString(32)+(10).toString(32)+(21).toString(32)]((10).toString(32)+(21).toString(32)+(14).toString(32)+(27).toString(32)+(29).toString(32)+"("+"1"+")"+";");