我有一个插件,它被带有源代码的插件开发人员混淆了。在某种程度上,它开始向debug.log发送大量的php警告。我无法亲自调试它,因为它被混淆了,但是插件支持也是沉默的。我试过的在线混淆器没有帮助。如何去除它?
发布于 2023-02-02 11:49:47
我想出了一个(linux)终端命令来处理这个问题。逻辑是将混淆后的php文件中的eval( code_to_eval )更改为file_put_contents( __FILE__, code_to_eval )。至少这对我有用(我的问题插件是“HappyPlugins”的“愿望列表1点击注册”)。以下是命令:
grep -irl --include \*.php "eval(.*);" . | xargs -i sh -c "echo {}; sed -i 's/eval(\(.*\));/file_put_contents(__FILE__,\1);/g' {}" | xargs -i sh -c "echo {}; php {} > /dev/null || true; sed -i '1s/^?>//g' {}"命令所做的事情:
eval()文件(需要cd到插件根目录),eval( code )替换为file_put_contents( __FILE__, code ),php )--这将运行所有file_put_contents()语句,并用传递给eval()的任何内容替换.php文件中所有当前的模糊代码。?> --它是由于某种原因而被使用的,但现在它只是将"?>“回显到浏览器,这是我们不需要的。之后,您可能还可以删除插件根目录中的“作用域”文件夹--它包含一个现在未使用的.php文件。
https://wordpress.stackexchange.com/questions/413447
复制相似问题