1
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 是可以执行代码的,这里就完成了原代码的执行 |
2
tabris17 2014-12-15 14:58:20 +08:00
不替换变量名的混淆都是蛋疼的混淆,但是PHP这种动态语言又不太好替换变量名
|
3
kmvan 2014-12-15 16:04:33 +08:00 via Android
效率不要太高!!
|
4
yakczh OP 是用什么方法把 return empty($b) ? base64_decode($a) : func_1(strtr($a, $b, strrev($b))); 里面的函数也替换掉的?
|