关于js eval 的解密方法 二
来源:互联网 发布:电商可变数据印刷 编辑:程序博客网 时间:2024/06/06 14:26
前一段时间随手写了一个关于 JS eval 的解密,但之前的代码稍微有点小问题,显示解码后的信息不完整,主要是<只进行了一次替换,现在从新调整了一下。
并且,现在也支持在代码中使用 /*....*/ 进行填充的JS代码解密,支持使用变量代替 eval 指令的混淆后代码的解密
关于 js eval 的解密方法
<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Decode For JS eval function</title> </head> <body><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(/</gi,'<'); 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(/</gi,'<'); } document.getElementById('decode_step').appendChild(el); step ++; return de_code(a); }else{ if (/\/\*[\s\S]*?\*\//gi.test(code)){code = code.replace(/\/\*[\s\S]*?\*\//gi,' ');code = code.replace(/\\u[\da-f]{4}/gi,function(m){eval(m.replace('\\u','var asc=0x'));return String.fromCharCode(asc);});//alert(/var\s*([^\s]+)\s*=\s*[\w]+[\s\S]*?\1\s*\(/gi.test(code));while (/var\s*([^\s]+)\s*=\s*[\w]+[\s\S]*?\1\s*\(/gi.test(code)){code = code.replace(/var\s*([^\s]+)\s*=\s*([\w]+)([\s\S]*?)\1\s*\(/gi,'$3$2(');code = code.replace(/^[\s;]+/gi,'');}var el = document.createElement('div'); el.style.border = '1px solid black'; el.style.margin = '10px'; el.style.padding = '10px'; el.innerHTML = code.replace(/</gi,'<'); document.getElementById('decode_step').appendChild(el);return de_code(code);}else{ return code; } } } </script> </body></html>
0 0
- 关于js eval 的解密方法 二
- 关于js eval 的解密方法
- 关于js里eval()方法的使用
- js eval解密
- js(eval)解密工具
- 解密JS eval
- javascript(js)使用eval方法加密过的函数解密方法
- Js 代替eval的方法
- eval(gzinflate(base64_decode解密方法
- 关于动态执行代码(js的Eval)
- js中eval方法的使用
- js中的Eval方法
- EVAL在线加密解密JS工具
- 关于js eval函数解析json格式的注意点
- js的 eval()函数
- 巧用JS的eval()
- JS的eval函数
- js学习--eval()方法
- OSGI环境中集成struts2
- FPGA开发之FPGA开发流程简介
- QML BOOK 第七章 Canvas Element
- java设计模式
- 微信公众帐号开发-消息创建时间long型与标准时间的互相转换
- 关于js eval 的解密方法 二
- cell根据文本高度动态调整高度适应
- exec与fock系统调用
- Trace 4136
- Matlab sum( ) 函数
- UVa12563 Jin Ge Jin Qu hao
- Linux C程序I/O模型简介与异步 I/O性能模型分析
- oracle HA 高可用性详解(之二,深入解析TAF,以及HA框架)
- JDNI是什么