php pack格式化代码,PHP混淆解密之pack还原大法

先看一段代码:

c37b1ff33436b88e85113198088bcf6b.png

图中代码已经格式化,可以看到有大量pack,当然,不只截图中的这些,手动替换的话,肯定要换到手软。当然了,肯定有自动替换的方法,mine就想到了一个比较笨的办法,下边详细说下。

分析下代码,上边是pack参数的数组,存在Globals变量中,这些数组就不管了,我们直接把有pack的代码行,变成一个字符串,然后把pack部分分离出来,接到代码中,例如:

echo'$GLOBALS["'.pack("H*", $GLOBALS[AAAAA____][0x5]).'"] = "'.pack("H*", $GLOBALS[AAAAA____][06]).'";';

这样就会把这一行代码直接打印出来,打印出来后pack就被替换成真正的字符了,当然必须得自动化处理,代码如下:

$txt = file('1.php');//按行读取目标文件1.php

foreach($txt as $t){

$t = str_replace("'", "\'", $t);//转义

$t = toPack($t);

echo 'echo \''.$t.'\';';

}

function toPack($t){

preg_match_all('/pack\([^\)]*?\)/s', $t, $pack);

if($pack){

foreach($pack[0] as $p){

$t = str_replace($p, '"\'.'.$p.'.\'"', $t);

}

}

return $t;

}

?>

经过处理后,输出的代码要替换原来的文件内容,运行一遍,才会得到去除pack的代码。

当然了,利用这种方法还能还原一些全局变量或者其他的加密标签,你可以改造得更智能,更自动化,本文仅分享一下思路,希望对你有所启发。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值