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);
?>

これはionCubeLoaderをチェックし、拡張機能が見つかった場合はさまざまな方法で暗号化された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 に答える