这个PHP有什么作用?它是编码器/解码器吗?

时间:2010-10-07 18:57:58

标签: php encryption ioncube

我根本不懂PHP;这更像是一个好奇的问题。

下面的PHP函数在文本文件中是几千个字符的文本,例如:

xnEFstUhSNWGSx5zTq4X/AUw/rtism+klrBETWg0xE1uwb49rnRxrgrgY5EEp3Y0uvTcvLqhUFOP
4n7LDLQpQ9UACTyuUjGBKmUScQCYLCP08u06t0K3nWTNiM7Q6bQMk/iZBE+UK1ywbVC1Lzr9OOEK

这个php函数是否将随机文本编码到php中?可以从中找出加密方案吗?

编辑:客户说他拥有对其他人开发的代码的完全所有权和权利。怎么解码?它需要密码吗?

<?php //003ac
if (!extension_loaded('ionCube Loader')) {
    $__oc = strtolower(substr(php_uname(), 0, 3));
    $__ln = 'ioncube_loader_' . $__oc . '_' . substr(phpversion(), 0, 3) . (($__oc == 'win') ? '.dll' : '.so');
    @dl($__ln);
    if (function_exists('_il_exec')) {
        return _il_exec();
    }
    $__ln   = '/ioncube/' . $__ln;
    $__oid  = $__id = realpath(ini_get('extension_dir'));
    $__here = dirname(__FILE__);
    if (strlen($__id) > 1 && $__id[1] == ':') {
        $__id   = str_replace('\\', '/', substr($__id, 2));
        $__here = str_replace('\\', '/', substr($__here, 2));
    }
    $__rd = str_repeat('/..', substr_count($__id, '/')) . $__here . '/';
    $__i  = strlen($__rd);
    while ($__i--) {
        if ($__rd[$__i] == '/') {
            $__lp = substr($__rd, 0, $__i) . $__ln;
            if (file_exists($__oid . $__lp)) {
                $__ln = $__lp;
                break;
            }
        }
    }
    @dl($__ln);
} else {
    die('The file ' . __FILE__ . " is corrupted.\n");
}
if (function_exists('_il_exec')) {
    return _il_exec();
}
echo ('Site error: the file <b>' . __FILE__ . '</b> requires the ionCube 
PHP Loader ' . basename($__ln) . '  to be installed by the site administrator.');
exit(199);
?>

5 个答案:

答案 0 :(得分:11)

它几乎是由离子立方体编码的PHP,如果你愿意,也可以进行混淆。 Ioncube是一个非自由混淆的字节码执行引擎,ioncube loader是处理混淆代码的库。

值得一提的是'deobfuscator'是一个免费的库,它已经加载到我见过的大多数PHP安装中。

答案 1 :(得分:5)

它由 ionCube 加密。 ionCube扩展将处理代码的解密。可能有可能自己解码,但检查您与开发人员的许可协议,因为它不确定这样做是合法的。

该部分代码仅检查您的服务器上是否安装了ionCube扩展。文件的解密是(我认为,阅读混淆的代码并不容易: - ))。

答案 2 :(得分:4)

以下是格式化的代码:

<?php
  //003ac
  if (!extension_loaded('ionCube Loader')) {
      $__oc = strtolower(substr(php_uname(), 0, 3));
      $__ln = 'ioncube_loader_' . $__oc . '_' . substr(phpversion(), 0, 3) . (($__oc == 'win') ? '.dll' : '.so');
      @dl($__ln);
      if (function_exists('_il_exec')) {
          return _il_exec();
      }
      $__ln = '/ioncube/' . $__ln;
      $__oid = $__id = realpath(ini_get('extension_dir'));
      $__here = dirname(__FILE__);
      if (strlen($__id) > 1 && $__id[1] == ':') {
          $__id = str_replace('\\', '/', substr($__id, 2));
          $__here = str_replace('\\', '/', substr($__here, 2));
      }
      $__rd = str_repeat('/..', substr_count($__id, '/')) . $__here . '/';
      $__i = strlen($__rd);
      while ($__i--) {
          if ($__rd[$__i] == '/') {
              $__lp = substr($__rd, 0, $__i) . $__ln;
              if (file_exists($__oid . $__lp)) {
                  $__ln = $__lp;
                  break;
              }
          }
      }
      @dl($__ln);
  } else {
      die('The file ' . __FILE__ . " is corrupted.\n");
  }
  if (function_exists('_il_exec')) {
      return _il_exec();
  }
  echo('Site error: the file <b>' . __FILE__ . '</b> requires the ionCube 
PHP Loader ' . basename($__ln) . '  to be installed by the site administrator.');
  exit(199);
?>

如果找到扩展名,看起来这会检查ionCube Loader并通过各种方法解码加密的php。否则,它让管理员知道他/她需要安装扩展程序。

编辑看起来您在我回答时格式化了文字。

答案 3 :(得分:3)

根据这个网站,它是一个编码器。我想这是代码混淆。

http://www.ioncube.com/

答案 4 :(得分:2)

是的,它是加密/解密PHP源代码。您可以在底部看到它引用ionCube个产品。