feiyuanqiu
2014-12-15 14:55:29 +08:00
很蛋疼地试了一下。。。
原代码:
<?php
class Test
{
public function main()
{
echo 'hello';
}
}
$obj = new Test;
$obj->main();
?>
加密后代码:
...太长就不发上来了,简单说下我的理解吧:
1、它用这个函数混乱以下变量:
function func_1($a, $b)
{
return empty($b) ? base64_decode($a) : func_1(strtr($a, $b, strrev($b)));
}
$n=func_1("c3RycmV2‰"); // strrev
$o=func_1("c3RydHI=œ"); // strtr
$e=func_1("K3p1bmNvb€QByKQNz‚","ZMQPXHK"); // base64_decode(strtr('K3p1bmNvb€QByKQNz‚', 'ZMQPXHK', strrev('ZMQPXHK'))); => gzuncompress
$g=func_1("DmFLkTD0X2RlD29šZkQ==","YkLIzZD"); // base64_decode
$h=func_1("ezgxNDdlMDM1M“GViZDU1ZjQ1MG–RkZTZkMzUxM2Eœ0MzEye2U=„","LDsSje"); // /8167e2350ebf55d450dde6d3513a4312/e
$i=func_1("oXohbA==‡","ZByFo"); // eval
$j=func_1("EHJlZ19yZX—BsYWNl‹","cdTeE"); // preg_replace
2、它将原代码 base64_encode 之后,又使用 gzcompress 压缩,执行的时候先 base64_decode,再 gzuncompress,再 eval,这里它使用了 preg_replace,我记得好像 调用preg_replace的修饰符e 是可以执行代码的,这里就完成了原代码的执行