【问题标题】:how to reverse php obfuscated code?如何反转php混淆代码?
【发布时间】:2015-03-31 09:16:59
【问题描述】:

我解码了一些我的 ionCube 编码的 PHP 页面,但它包含带有混淆的 PHP 函数名称的代码:

例子:

_obfuscate_DRYWMSUQDzIXCSohIQMqCz0NJiIUBSIÿ("Location: error.php");

这是头函数的代码。

header("Location: error.php");

谁能解释一下如何对这段代码进行去混淆处理?

【问题讨论】:

  • 先问问是谁把它弄糊涂了
  • 似乎这个不同,因为它没有'\'或数字@d4v1d:/
  • @Dagon :如果我认识这个人,这将是我的第一件事……不幸的是,它是由这里的一位前雇主完成的:/
  • @SasithMaduranga - 但您将拥有原始源代码的备份和版本控制,对吧? :) 编码对于许可代码非常有用,并且对于需要确保实时代码不会被开发人员绕过严格的变更控制程序进行修补的组织很有用,但是如果您拥有受保护的源代码,那么某些事情听起来很严重你的管理和开发实践有问题。

标签: php deobfuscation ioncube


【解决方案1】:

混淆设计是不可逆转的——如果有一种方法可以轻松地逆转混淆,那么使用混淆将毫无意义。将其视为对函数名称进行哈希处理——尽管可能会暴力破解原始名称,但您必须付出一些认真的努力,包括:

  • 找出使用了哪种散列算法
  • 获取使用的混淆密钥(在编码期间指定)
  • 暴力破解每个函数名,从a()my_function_name_that_does_something()

如 cmets 中所述,检索原始源代码的唯一现实机会是联系原始开发人员。您不会期望从 C 代码编译的二进制文件中获得原始源代码,对吗?

【讨论】:

  • 呃。那么 PHP 处理器如何知道这个混淆语句是哪个函数?
  • @SasithMaduranga 他们没有 - 项目中的所有函数都被哈希到相同的混淆名称,他们不需要知道实际的函数名称。这会破坏变量变量 ($$var) 和 eval() 之类的东西,但这些东西不应该在“好代码”中以任何方式使用。然而,据我所知,系统函数应该仍然是未混淆和可读的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2013-03-24
  • 1970-01-01
  • 2010-10-20
  • 2017-01-11
  • 2014-05-09
  • 1970-01-01
相关资源
最近更新 更多