使用eval()和base64_decode()来混淆代码 - 不在函数内工作?

时间:2011-11-04 19:41:28

标签: php base64 eval

简而言之,我正在构建一个自托管应用程序,并创建一个基本级别的威慑力,以阻止那些对开发知之甚少(即我的目标市场)的人撤消回叫,我决定使用eval()base64_decode()来混淆和执行几行代码 - 特别是那些处理验证用户许可证密钥的代码。

然而,我遇到的问题是我似乎无法在函数中运行eval(base64_decode(..));

例如,这样可以正常工作:

eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyBlY2hvICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+Ijs=');

执行以下内容,

session_name("_inst");
session_start();
$_SESSION['key'] = true;
echo "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>";

但另一方面,这失败了:

function escapeOut() {
eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7'));
}

echo escapeOut();

它应该执行以下内容,

session_name("_inst");
session_start();
$_SESSION['key'] = true;
$escape = "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>";
return $escape;

起初我没有回来$escape,但在意识到并纠正了这个问题后,我感到难过。这可能是非常简单的事情,但我很难过。

任何关于为什么这不起作用的答案/我能做些什么才能让它发挥作用将不胜感激!

1 个答案:

答案 0 :(得分:2)

return语句中{{}}将从 eval返回,而不是从外部函数返回。

我认为你需要这样的东西:

eval()

另外,请记住function escapeOut(){ return eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7')); } echo escapeOut();

是微不足道的