3

我根本不懂 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);
?>
4

5 回答 5

11

它实际上是 ioncube 编码的 PHP,或者如果您愿意,可以进行混淆处理。Ioncube 是一个非免费的混淆字节码执行引擎,它ioncube loader是处理混淆代码的库。

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

于 2010-10-07T19:04:09.347 回答
5

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

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

于 2010-10-07T19:01:28.853 回答
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。否则,它会让管理员知道他/她需要安装扩展。

编辑:看起来你在我回答时格式化了文本。

于 2010-10-07T19:03:04.340 回答
3

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

http://www.ioncube.com/

于 2010-10-07T19:02:20.963 回答
2

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

于 2010-10-07T19:00:42.507 回答