作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在互联网上搜索过,但到目前为止没有找到解决方案。
我必须抓取用 Dean Edwards packer tool 压缩的页面内容(包含视频流) , 实时。
因此,我只需要通过 PHP 来解码压缩后的 JS。 (完整场景:curl页面内容,找到JS内容,实时解码,获取动态视频流)。
那么,有什么方法可以仅通过 PHP 解码这个压缩的 js 示例吗?
压缩代码的示例:
eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(0(){4 1="5 6 7 8";0 2(3){9(3)}2(1)})();',10,10,'function|b|something|a|var|some|sample|packed|code|alert'.split('|'),0,{}))
谢谢
最佳答案
首先,您必须将打包的 javascript 拆分为相关部分。
从“eval”到“}('”的第一部分与您无关:
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('
第二部分是你的最小化函数(payload):
(0(){4 1="5 6 7 8";0 2(3){9(3)}2(1)})();
第三部分是基数,解码有效载荷时将用作基数:
10
第四部分是字数:
10
第五个相关部分是您的关键字(以 | 分隔):
function|b|something|a|var|some|sample|packed|code|alert
最后一部分也是无关紧要的:
'.split('|'),0,{}))
现在基本上你已经拥有了解码所需的所有部分:
$payload = '(0(){4 1="5 6 7 8";0 2(3){9(3)}2(1)})()';
$radix = 10;
$wordCount = 10;
$words = array("function","b","something","a","var","some","sample","packed","code","alert);
现在您必须将负载中的所有单词字符替换为单词数组中的相应单词。这在您的示例中很简单,因为您的源 javascript 仅包含 10 个单词。
第一个单词字符为0,替换为$words[0] = function
第二个单词字符为4,替换为$words[4] = var
等等……
当你完成后,你的结果应该是:
(function(){var b="some sample packed code";function something(a){alert(a)}something(b)})();
当然,当涉及到单词 > 10 时,它会稍微复杂一些。
但是为此,您可以查看我的解包器类 PHP JavaScript unpacker .
特别是源代码中的 Unbaser 类。
关于javascript - JS Unpacker via PHP - 函数(p,a,c,k,e,r),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982151/
我是一名优秀的程序员,十分优秀!