为什么`system`不被这些混淆的PHP隐藏

问题描述 投票:2回答:1

我最近试图选择一个混淆器,我尝试了这些我用Google搜索:

https://www.gaijin.at/en/tools/php-obfuscator http://www.pipsomania.com/best_php_obfuscator.do https://www.tools4nerds.com/online-tools/php-obfuscator

他们在混淆变量名称和函数名称方面做得很好,但是没有一个能隐藏函数system,有人能告诉我为什么会这样吗?

php obfuscation
1个回答
2
投票

这些工具通过降低其可读性来使代码更难理解:它们删除缩进和注释,替换有意义的变量名称和user-defined functions甚至编码您的字符串内容。目标是使修改或重用代码变得更加困难,因为PHP是一种解释型语言,使得源代码对于站点/应用程序管理员是可见的。为此目的,混淆PHP的built-in functions是没有用的,你可以看到同样的事情发生在例如echo()

ORIGINAL:     echo "Obfuscated string.\n";
Gaijin.at:    echo base64_decode('T2JmdXNjYXRlZCBzdHJpbmcuCg==');
Tools4Nerds:  echo "O\x62f\x75s\x63a\x74\x65\x64 \x73t\x72\x69n\x67\x2e\n";

为了混淆甚至内置的函数名称,eval()被广泛用于恶意目的。这样,PHP源代码可以在执行之前作为字符串处理,从而启用用于字符串混淆的每个方法。

ORIGINAL:     system('uptime');
OBFUSCATED:   eval(base64_decode("c3lzdGVtKCd1cHRpbWUnKTs="));

即使这个例子也表明,如果没有内置函数,就不可能完全混淆。编码通常会使源代码更长,编码越需要执行得越慢。站点管理员确实关心站点性能和消耗的额外资源,但这并不会使犯罪分子利用服务器供自己使用。

© www.soinside.com 2019 - 2024. All rights reserved.