【发布时间】:2025-12-02 00:45:02
【问题描述】:
我在安装 Magento 的过程中处理了大量令人讨厌的第三方代码,并且在跟踪它的线程时遇到了一些麻烦。这是我看到的错误消息:
PHP 解析错误:语法错误,/chroot/home/user/example.com/html/dev4/app/code/local/company/PluginName/Model/Module/License/Light/Performer/ 中的意外 ']' Reader.php(36) : eval()'d code(18) : eval()'d code(1302) : eval()'d code on line 1
我已经在Reader.php 中确定了 eval() 链的开头,它位于第 36 行。那么后面的括号中的数字是否也只是大文本块中的行引用?我倾向于这样认为,但我自己无法完全弄清楚。如果是这样,那eval()'d code(1302) 似乎特别可怕。 D:
我会提供更多上下文,但代码的许可状态不是很清楚,所以我只能给出这个三重 eval() 链当前正在破坏事物,并且它的第二层已构建像这样:
$s = "$BLOCK_OF_SCRAMBLED_TEXT"
$s2 = '';
for ($i=0;($i+0xB-1)<strlen($s);$i+=11) {
for ($k = 013-1 ; $k > -1 ; --$k) {
$s2 .= $s[$i+$k];
}
}
eval($s2);
当您在 Magento 的程序流程之外调动该块时,$s2 包含可爱的东西,例如 -
if($license->getModule()->getDecode()) {
$source = base64_decode($source);
}
...
list($source) = explode("PERFORMER_CLASS_CREATED",$source,2);
$source .= " */";
ob_start();
eval($source);
ob_end_clean();
那么:我如何才能将这个eval() 链追踪到实际导致问题的代码点?
【问题讨论】:
-
D:确实,非常非常 D:。
-
是的,混淆代码?也许您应该修复“许可证状态”并要求发布者进行修复。
-
通过“许可证状态不明确”,我的意思是,“我们的安装 100% 符合许可证,但我认为他们会很不高兴看到他们的代码在 SO 。”我们正在与他们就修复我们的安装进行谈判,但我怀疑他们是否会修复他们的混乱邪恶软件架构。