使用php类解码dean edwards javascript packer

时间:2011-10-10 09:06:54

标签: php javascript decode

班级档案http://pastebin.com/apGPiAXd

我找到了一个php端口,用于对javascript的dean edwards packer进行编码和解码。位于http://joliclic.free.fr/php/javascript-packer/en/。我对这个类的编码方面不感兴趣,但对解码部分不感兴趣。我想采取这样的事情

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}('4.8=9(a){1 b=e f();1 c=4.g("*");5(1 i=0;i<c.6;i++){2(c[i].3.h(" ")>=0){1 d=c[i].3.k(" ");5(1 j=0;j<d.6;j++){2(d[j]==a){b.7(c[i])}}}l 2(c[i].3==a){b.7(c[i])}}m b}',23,23,'|var|if|className|document|for|length|push|getElementsByClassName|function|||||new|Array|getElementsByTagName|indexOf|||split|else|return'.split('|'),0,{}))

并将其放在变量中并通过要解码的类运行它。我不知道如何让javascript进入要解码的类?也许是这样的:

require 'class.JavaScriptPacker.php';
$packed_javascript = $_GET["js"];

/* run $packed_javascript through class*/

return $decoded_javascript;

3 个答案:

答案 0 :(得分:1)

您可以在浏览器中轻松打开开发人员控制台(在chrome或firebug中使用ctrl + j等),将打包的JS代码粘贴到控制台中,然后在输入之前只需更换&#34; eval&#34;使用&#34; console.log&#34;或&#34;警告&#34;

我知道这篇文章已经过时但我遇到了同样的问题,并且认为我发布了我的解决方案。你很受欢迎。

答案 1 :(得分:0)

这里是上面解压缩的java脚本。是你想要的吗?

document.getElementsByClassName=function(a)
    {
    var b=new Array();
    var c=document.getElementsByTagName("*");
    for(var i=0;
    i<c.length;
    i++)
        {
        if(c[i].className.indexOf(" ")>=0)
            {
            var d=c[i].className.split(" ");
            for(var j=0;
            j<d.length;
            j++)
                {
                if(d[j]==a)
                    {
                    b.push(c[i])
                }
            }
        }
        else if(c[i].className==a)
            {
            b.push(c[i])
        }
    }
    return b
}

Reference

答案 2 :(得分:0)

旧问题,但这里是简单的解码写在PHP

<?php

$a = "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}('4.8=9(a){1 b=e f();1 c=4.g("*");5(1 i=0;i<c.6;i++){2(c[i].3.h(" ")>=0){1 d=c[i].3.k(" ");5(1 j=0;j<d.6;j++){2(d[j]==a){b.7(c[i])}}}l 2(c[i].3==a){b.7(c[i])}}m b}',23,23,'|var|if|className|document|for|length|push|getElementsByClassName|function|||||new|Array|getElementsByTagName|indexOf|||split|else|return'.split('|'),0,{}))";

$pos = strpos($a, '}(');
$a = substr($a, $pos);
$pos = strpos($a, ",'");
$b = substr($a, 0, $pos);
$c = substr($a, $pos+2);
$pos = strpos($c, "'.");
$c = substr($c, 0, $pos);

$items = explode('|', $c);

//var_dump($items);

for ($i = count($items); $i >= 0; $i--) {
    $b = str_replace($i, $items[$i], $b);
}

$b = str_replace("\'", "'", $b);

echo ' procedure: ';
echo $b;

?>