gpt4 book ai didi

javascript - JS Unpacker via PHP - 函数(p,a,c,k,e,r)

转载 作者:行者123 更新时间:2023-11-30 10:17:45 25 4
gpt4 key购买 nike

我在互联网上搜索过,但到目前为止没有找到解决方案。

我必须抓取用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com