【问题标题】:Ioncube - obfuscation errorIoncube - 混淆错误
【发布时间】:2015-09-08 08:53:03
【问题描述】:

目前我正在评估我们公司开发的产品的ioncube。 运行编码产品时,我得到了

PHP Fatal error:  Class '[obfuscated]'

如果我的代码中有类似DomDocument 的内容,我会收到此错误。我觉得如果我安装了任何 php 包并使用 Ioncube 会引发错误。我联系了 Ioncube 支持,但无法获得解决方案。

有人知道如何使用包含DomDocumentimagick 之类的包用法的代码来使用 Ioncube 吗?

【问题讨论】:

  • 您的问题肯定来自“DomDocument”,当您不想要它时,它会被混淆。 IonCube 的文档对防止混淆特殊名称有什么看法?

标签: encryption obfuscation encode ioncube


【解决方案1】:

混淆重命名 ionCube 文件的编译代码中的潜在符号信息,使用无意义的名称,或者在函数的情况下,使用 PHP 源代码中甚至无效的名称。这样做的必然结果是,任何未编码的上下文在尝试使用已被混淆的符号时都会失败,正如预期的那样。

为了在编码和非编码世界之间架起一座桥梁,可以指定一个混淆排除列表来命名不应混淆的符号。由于 PHP 的性质,在诸如 $a->foo() 之类的代码中,通常不知道 $a 是哪个类的实例,因此如果排除 foo() 被混淆,则 foo() 在任何类上下文(即所有 foo()s)不需要被混淆。这并不是一个真正的问题,因为符号重命名远不如使用动态算法密钥的代码加密等新功能重要,但最好不要盲目地从混淆中排除碰巧与来自的方法共享相同名称的每个方法一个模块,这就是为什么默认不排除模块类的方法的原因。

这样做的结果是,您应该准备一个仅包含您要排除的方法的排除文件。为所有已知模块预先准备好函数列表会很有用,这可能会在未来的版本中提供,但是手动或自动生成这个很容易。

披露:我与 ionCube 有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-14
    • 2018-11-07
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多