Xcache баг-трекер декомпилятора

Статус
В этой теме нельзя размещать новые ответы.
Небольшая порция серьезных исправлений - Для просмотра ссылки Войди или Зарегистрируйся
Код для проверки нововведений:
PHP:
namespace ns1;
 
class Model
{
  const c1 = "222";
  public $v = '1';
  public static  $v2 = "123";
  public static $s1;
 
  public static function find()
  {
    print "123";
  }
 
  public function  f() {
    print "2";
 
  }
}
 
class Product extends Model {
  const c2 = "11";
  public static $s2;
  public function f2() {
    print "3";
  }
 
}
 
class Product2 extends Product{}
 
namespace ns2;
 
class Product {
  const cc2 = "44";
  public static $ss2;
  public function ff2() {
    print "4";
  }
 
}
class Product2 extends Product {}
 
${"var1{$varname}"} = '1';
${"foo$one"} = '2';
${'foo' . ONE} = '3';
${'foo' . one()} = '4';
$output = $controller->{$controller->action}($this->params);
$output = $controller->$controller->action($this->params);
$r = $aaa->{"aabbn"."asdsa"}();
$r = $aaa->{"aabbn"}();
pp::w12( );
@${"authorized$qq"};
${"authorized$qq"};
 
$this->$vname = 123;
print __DIR__;

Еще пару фиксов и хватит на сегодня:
1. баг с list
PHP:
list($v->a, $v->b) = fn(); // расклеивал на 2 неработающих строки
2. автоматическая склейка строк
PHP:
print ("a" . "b" . "c" . "d"); // print ("abcd");
$id = "a" . "b". $v . "c"; // $id = "ab".$v."c";
 
И последний Для просмотра ссылки Войди или Зарегистрируйся -- переделал работу со строками, корректно работают регулярки и более умная вставка {}
Код для теста:
PHP:
$q = "";
$v = "{$a}";
$c = $d;
$c = $e. $h["{$h2}"]. $h["{$h1}"]. $h["{$h1}"];
$m = $z["{$h2}"]. $q. $z["{$h1}"];
$r = "kk $vr $q->e {$a->b->c} \n\ra$v[0]a\ta $b\0asd{$v['0']}qw{$v[0][2]}er".$v."\$te\\st";
$r = "a{$v}aa ' bbb \' \\ \\\'";
 
list($a, $b, $c) = each($var);
 
print ("a" . "b" . "c" . "d");
$id =  "a" . "b". $v . "c";
preg_match("/[A-Z]\\$\t[a-z0-9]*$\37/"."asdasd", $a, $b);
preg_match("/[A-Z]\$[a-z0-9]*$\37/"."asdf"."asdsad{$dsdf}sadf", $a, $b);
$v = "a{$b}c{$e}sdfsdf{$as->dd}asdsdfgdflkfj";
 
$k = fn(preg_replace(array("/([A-Z])/"), array('${1}'), $k));
$k = preg_replace(array("/([A-Z])/"), array('${1}'), $k);
 
print fn("\$var \"str\" pass");
if (preg_match("/(\d+)\D+/", $s, $n));
if (CN == '\\');
 
for стало более симпатичным - Для просмотра ссылки Войди или Зарегистрируйся
починена потеря do {} while и while(){} в некоторых ситуациях Для просмотра ссылки Войди или Зарегистрируйся
PHP:
for ($i = 0,$p = strlen ($q); ($i < $p); ++$i)
{
  for ($p = &$q; ($i < $p); ++$i)
  {
    for ($p[0] = strlen ($q); ($i < $p); ++$i)
    {
      for ($p->v = strlen ($q); ($i < $p); ++$i)
      {
      }
    }
  }
}
 
while($i) { print "1"; }
 
do {
  try {
    echo 'outer try 2';
  }
  catch (OuterException $e) {
    echo $e;
  }
} while ($v);
 
1. Доработана работа со строками, вроде бы более корректно, хотя визуально не всегда соответствует исходнику, но функционально вроде бы совпадает - требуется тестирования
2. Отключено добавление & к операндам функций для соответствия требованиями PHP 5.3
Для просмотра ссылки Войди или Зарегистрируйся

p.s. Реквестую новые багрепорты )
 
остались листы в принципе, мэджики какие можно сделать, и далее стресс-тестирование на открытом коде, на всех ядрах, и уже можно переходить к шифровальщикам. Dima2k, с кешем где-то затерялся)), компилит тихонечко наверно) хех
 
Свежий Для просмотра ссылки Войди или Зарегистрируйсяна бинарные операции, теряет скобки - Для просмотра ссылки Войди или Зарегистрируйся

Вход:
PHP:
1 && ($a->f = 1);
1 || ($a->f = 1);
1 || ($a = 1);
1 || ($a[1] = 1);
1 || ($a = &$b);
Выход:
PHP:
1 && $a->f = 1;
1 || $a->f = 1;
1 || ($a = 1);
1 || $a[1] = 1;
1 || ($a = &$b);
[/spoil]

Криво определяет Для просмотра ссылки Войди или Зарегистрируйся: - Для просмотра ссылки Войди или Зарегистрируйся

[spoil]
PHP:
try
{
  return 1;
}
catch ( Exception $e )
{
  if ($v)
  {
    throw $e;
  }
}
[/spoil]

Криво работают Для просмотра ссылки Войди или Зарегистрируйся:

[spoil]
PHP:
class cl
{
  const C = "123";
  static $v = array(Cl::C=>"aaa");
  static $v2 = array(self::C=>"aaa");
}
Выход:

PHP:
class cl
{
        const C = "123";
 
        static  public $v = array("Cl::C\000\b" => NULL);
        static  public $v2 = array("self::C\000\b" => NULL);
}

И для желающих интересное вводное чтиво по внутренностям PHP - Для просмотра ссылки Войди или Зарегистрируйся

upd. исправлено пару багов с Для просмотра ссылки Войди или Зарегистрируйсяи со Для просмотра ссылки Войди или Зарегистрируйся
 
Добрый день, уважаемые девелоперы!
Ребята, подскажите, пожалуйста, как мне скомпилировать xcache с включенной опцией
--enable-xcache-disassembler
под Windows?
Пытаюсь делать по инструкции
Для просмотра ссылки Войди или Зарегистрируйся

Скачанный с офф. сайта xcache возвращает пустой файл при декомпиляции. Ошибок не возвращает.
 
компиляцией вообще когда-нибудь занимались?, с офф сайта декомпилятор дб работать по крайней мере в шапке комплект для тестов есть с работающим декомпилятором, так же поянения как им пользоваться, ох, сообщений у вас маловато, процесс компиляции описан в 112 посте если интересно снизил хайды, ориентируйтесь по информации и ссылкам в общем.
......
с хуком пока что не разобрался и со ссылками на разрешенный внешний символ, если делаю хук по принципу vld, пробовал сделать шаред подобрал либу кеша (xcache_php.lib), потом с хуком, не видит через прагму в zend_vm_execute.h положил в SDK майкрософта, может еще к исходникам конечно попробовать положить, еще другой момент может execute в кеше "нету", т.е. у него вроде как хуки только на компиляцию и потому такая фигня с execute:kuku:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху