关于js eval 的解密方法
2014-07-15 18:53
190 查看
关于 js eval 的解密方法 二
首先,贴个网址 http://www.jb51.net/tools/eval/,在这里可以对一般的 eval 加密的 js 进行解密
但是在实际使用中,发现这里解密的结果并不是很理想
然后想起来不知道从哪里听说的一个方法,把 eval 修改成 alert 就可以得到结果了,尝试了一下,果然如此
然后,开始尝试去解密这些已经加密过的 js ,附两个帖子 http://bbs.csdn.net/topics/390816941 和 http://bbs.csdn.net/topics/390835326
在这两个帖子中的 js ,我是这么处理的
首先,把 js 复制到一个 html 文件中,然后通过浏览器打开
再把 /**/这些注释的内容全部删除
1)然后,把 eval 修改成 document.write,刷新一下,我们就得到了一个新的 eval
然后把原来的 js 全部注释掉,把页面上显示出来的 js 复制到文件中,并把 eval 修改成 document.write
这里需要注意的是 %3C这个符号,因为他是<,所以document.write会出错,我们需要手动把 %3C替换成<,这样得到的新的 js 才是正确的
然后重复 1)
一直到 不在产生eval
这样就可以得到了加密前的 js 代码了
当然,把最后一次得到的 eval 信息直接复制到最开始我贴的那个网址上进行解密,可以得到带格式的 js ,这样也方便我们阅读了
http://bbs.csdn.net/topics/390835326 解密过程,使用下边的 js 即可清晰明了的看出来了
首先,贴个网址 http://www.jb51.net/tools/eval/,在这里可以对一般的 eval 加密的 js 进行解密
但是在实际使用中,发现这里解密的结果并不是很理想
然后想起来不知道从哪里听说的一个方法,把 eval 修改成 alert 就可以得到结果了,尝试了一下,果然如此
然后,开始尝试去解密这些已经加密过的 js ,附两个帖子 http://bbs.csdn.net/topics/390816941 和 http://bbs.csdn.net/topics/390835326
在这两个帖子中的 js ,我是这么处理的
首先,把 js 复制到一个 html 文件中,然后通过浏览器打开
再把 /**/这些注释的内容全部删除
1)然后,把 eval 修改成 document.write,刷新一下,我们就得到了一个新的 eval
然后把原来的 js 全部注释掉,把页面上显示出来的 js 复制到文件中,并把 eval 修改成 document.write
这里需要注意的是 %3C这个符号,因为他是<,所以document.write会出错,我们需要手动把 %3C替换成<,这样得到的新的 js 才是正确的
然后重复 1)
一直到 不在产生eval
这样就可以得到了加密前的 js 代码了
当然,把最后一次得到的 eval 信息直接复制到最开始我贴的那个网址上进行解密,可以得到带格式的 js ,这样也方便我们阅读了
http://bbs.csdn.net/topics/390835326 解密过程,使用下边的 js 即可清晰明了的看出来了
<textarea id="jscode" style="width:100%;height:300px;"></textarea> <button onclick="decode();">decode</button> <div id="decode_step"></div> <script> var step = 0; function decode(){ if (document.getElementById('jscode')) { var code = document.getElementById('jscode').value; code = de_code(code); } } function de_code(code){ if (/^eval/gi.test(code)) { try{ eval(code.replace(/^eval/gi,'var a=').replace('/(','(')); }catch(e){ alert(e); } var el = document.createElement('div'); el.style.border = '1px solid black'; el.style.margin = '10px'; el.style.padding = '10px'; if (!/^eval/gi.test(a)) { var b = a; b = b.replace('<','<'); b = b.replace(/\{(?!<br(?!\w))/gi,'{<br/>'); b = b.replace(/\}(\s*([,;]?|else)(?!\s*([,;]|else)))/gi,'<br/>}$1'); b = b.replace(/\}(?!\s*(else(?!\w)|<br\/>|[,;\(\)]))/gi,'}<br/>'); b = b.replace(/(([^;'"]|'[^']*'|"[^"]*")+);\s*/gi,'$1;<br/>'); while (/\{[^\{\}]+\}/gi.test(b)) { var c = /\{([^\{\}]*)\}/gi.exec(b); b = b.replace(c[0],'{'+c[1].replace(/(<br\/>(?!$))/gi,'$1 ')+'}'); } el.innerHTML = b; }else{ el.innerHTML = a.replace('<','<'); } document.getElementById('decode_step').appendChild(el); step ++; return de_code(a); }else{ return code; } } </script>
相关文章推荐
- 关于js eval 的解密方法 二
- 关于js里eval()方法的使用
- javascript(js)使用eval方法加密过的函数解密方法
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- js中关于array的slice和sort方法
- 关于JS中字符串去空格的解决方法
- 关于js在ie6中运行错误,在其他浏览器运行正常的解决方法
- asp.net 2.0关于NavigateUrl中绑定Eval()方法时出现"服务器标记的格式不正确"的解决方法
- 蛙蛙请教:js里的match方法和exec方法的区别,关于正则表达式的
- 关于NavigateUrl中绑定Eval()方法时出现"服务器标记的格式不正确"的解决方法
- asp.net 2.0)关于NavigateUrl中绑定Eval()方法时出现"服务器标记的格式不正确"的解决方法(转)
- JAVASCRIPT加密方法,JS加密解密综述(7种)
- 关于前台Eval方法绑定的性能损失
- c#中实现类似js的Eval方法
- 关于VS05里checkboxlist用JS获取不到value值的解决方法
- 关于JS中乘法的浮点错误解决方法
- 关于JS中乘法的浮点错误解决方法
- 关于vs2008的Eval方法
- js关于网页对象定位的方法收集
- 关于js操作word和excel的若干方法汇总