Исходники китайского deZender'а

Тема в разделе "Защита и взлом", создана пользователем X-ray, 18 май 2012.

  1. X-ray

    X-ray Создатель

    Регистр.:
    17 апр 2012
    Сообщения:
    47
    Симпатии:
    140
    В далеком 2007 году данный дезендер располагался на следующих сайтах:

    В последствии был слит мною и использовался для личных нужд, сам дезендер (скомпилированный) давно уже есть в паблике, но вот его исходники имеют единицы. В общем делюсь ими со всеми :) может быть доведете его до ума.

    [​IMG]

    Данный архив включает 3 архива:

    1) application.rar
    Скомпилированный дезендер + веб форма для загрузки файлов (кодировка веб-страницы китайская GBK)
    В каталоге /zend/fdgsggdsfgds32dgd/core/ находятся скомпилированный дезендер и все необходимые файлы

    2) instructions.zip
    Инструкции по установке на английском языке:
    readme.txt - описание дезендера
    install.txt - инструкция по установке web-dezend
    compile.txt - инструкцию по компилированию исходников dezend

    3) work.rar
    Исходники на С++



    Скачать: http://narod.ru/disk/49712859001.7ea32fc9b32c611faa2ba46a0efdd77f/sources.zip.html
    Пароль: sy5sgwv4ms2fpvmHt7Rvcrc2am1Eu8fOIUUkgcmzJXTE3HYhf3vDZI68dhWSTXAekBpZ06XLTZqTY4Qs1zql09wXp5SYYrCz00qA

    Размер: 106.98 Мб
     
    denis7656, edward1995, Dragon_X и 8 другим нравится это.
  2. sidxx55

    sidxx55 Free IC, SG-PS decoding, encoding

    Регистр.:
    12 май 2007
    Сообщения:
    332
    Симпатии:
    211
    протестировал вроде работает, отваливается на больших файлах, надо проверять сборку компилировать, scr пхп4, кто чекал, я нашол тока 1 доп файл, в 182 кб, это весь дезенд? видимо:nezn:
     
  3. sidxx55

    sidxx55 Free IC, SG-PS decoding, encoding

    Регистр.:
    12 май 2007
    Сообщения:
    332
    Симпатии:
    211
    попробовал собрать сеё творение, пхп 5.3 пока сборка не идет, наверно нужно фиксить- фиксить и фиксить код под пхп53. Остается для проверки лишь собрать на родном API четверки :facepalm:

    для исправления бага отвала на больших файлах пришлось подсмотреть в RM версии ядра разницу выделяемых объемов буфера и стека
    Код:
    ////////////////////////////////
    RM core
    ////////////////////////////////
    /* Stack setting */
    #define DEFAULT_STRING_LENGTH 4096
    #define DEFAULT_STACK_SIZE 16
     
    /* Buffer size */
    #define BUFFER_SIZE 4096
    #define SMALL_BUFFER_SIZE 1024
    #define LARGE_BUFFER_SIZE 8192
     
    /////////////////////////////////
    qinvent core
    /////////////////////////////////
    #define OPC_STACK_SIZE 1024
    #define OPCS_MAX_LEN 16
    #define DEZ_VARS_NUM 1024
    #define NODE_STACK_SIZE 2048
     
    for files > 500 kb 
    сравниваем разницу в опкодов с any_key левая php 43 правая 53
    2012-05-26_162901.png
    29/05 (ночь) напишу 2 слов
    подрыв мозга продолжился в совершенно непредсказумом направлении, пришлось от кинвента уйти к сборке RM на 53TS, NTS для версии зенда будет скомпилна позже (не все так просто), Any_key потом подробно распишет дубль 2 по RM, если кому будет интересно - со скриншотами и подробным объяснением баг фиксов соборки - шутка, планировалось выпустить виртуалку.
    В общем на удивление заработал RM, который раньше не удавалось запусть после компиляции, так ка кон был в отключенном состоянии и в коде нехватало его инициализации, сборка на 53 наложила свой отпечаток, и есть перекос адаптации обрабатываемых данных декомпилятром на некоторых опкодах и переменных, который нужно будет учитывать (благо vld щас уже поддерживает 54 и там можно подсмотреть условия изменений), еще в RM использовались некоторое количество старых опкодов!! (например опкодs Unset\isset)
    RM===============
    /* 075 */ { "UNSET_DIM_OBJ", "unset", 0 },
    /* 076 */ { "ISSET_ISEMPTY", "", 0 },
    Qinvent=============
    #define ZEND_UNSET_DIM_OBJ 75 /* unset dim, unset object */
    #define ZEND_ISSET_ISEMPTY 76 /* isset, empty */
    /////////////////////////// ^^^php4^^^//////////////////////////////////////
    Хотя в 52php версии уже
    #define ZEND_UNSET_DIM 75
    #define ZEND_UNSET_OBJ 76
    там есть еще опкоды....достойные внимания...в общем если бы не Кинвент, то проект так бы и простаивал.
     
    Dragon_X нравится это.
  4. Any_Key

    Any_Key aka mad red cat

    Регистр.:
    30 мар 2006
    Сообщения:
    388
    Симпатии:
    344
    Как человек собравший эти два дезендера. Могу сказать одно. Есть кинвент 5,3 как модуль внутри vld, я извиняюсь но стринг-реплейс который там активно используется это просто детский сад, к которому возвращаться не буду. Кинвент это слишком прост для решения подобных задач. Однако большое спасибо ТС за то что пнул в нужном направлении

    RM сила что сказать, лекснер вывернутый на изнанку куда правельный подход разбора
    Это да сейчас отскиншотю 2 мегабайта кода:D
    Однако адаптацию нужно вести, причем достаточно глубоко влазить. Благо дело есть понимание структуры работы дезенера. И уже складывается карта проекта в голове с взяимосвязями.
    Так что дописывать его не будет сверх сложной задачей, просто затратной по времени.
    SidX55 нашел еще 1 баг. unset(${$key}); в данной конструкции вываливается не сам ансет, а лекснер дезендера не понимает конструкцию.
    Это альтернативный синтаксис пхп, который просто не заложен в деза. Будем закладывать фигли ;)
     
  5. Any_Key

    Any_Key aka mad red cat

    Регистр.:
    30 мар 2006
    Сообщения:
    388
    Симпатии:
    344
    PS ночная сборка
    до

    PHP:
    <?php
    phpinfo
    ();
    $trsam=1;
    if (
    $trsam==1){
    phpinfo();
    } else {
    die();
    }
    ?>
    после
    PHP:
    <?php
     
     
    phpinfo
    ( );
    $CV_0 1;
    if ( 
    $CV_0 == )
    {
        
    phpinfo( );
    }
    else
    {
        exit( );
    }
    ?>
     
  6. sidxx55

    sidxx55 Free IC, SG-PS decoding, encoding

    Регистр.:
    12 май 2007
    Сообщения:
    332
    Симпатии:
    211
    за RM тоже бы надо поблагодарить публично человека, не будем называть его "имя" но было бы неправильно обойти это стороной:party:, ps копирайто чего такой кривой получился и X 1 забыл;)
     
  7. Any_Key

    Any_Key aka mad red cat

    Регистр.:
    30 мар 2006
    Сообщения:
    388
    Симпатии:
    344
    копик нормальный это форум так его...
    про X1 забыл добавим
     
  8. sidxx55

    sidxx55 Free IC, SG-PS decoding, encoding

    Регистр.:
    12 май 2007
    Сообщения:
    332
    Симпатии:
    211
    проблема адптации пока не решена, но предварительные выводы можно сделать уже сейчас, у дейзика заложена определенная структура обработки конструкций опкодов, а с 52, незнаю как ниже версии, буквально сейчас сравнил дампы опкодов 52 и 53 версий оригиналов по сравнению с дезендом, в пхп не модифицированом свернуты некоторые контрукции опкодов, которые нужны для декомпиляции, что так же перегружает данными оригинальные не свернутые опкоды

    Перегрузка нормального опкода в дезе:
    ////////////////////////////////////////////////////////////////////////
    83 INIT_FCALL_BY_NAME [-] 1010348678[0] - 'msg_errorback', 'msg_errorback'
    >>> ДБ
    96 INIT_FCALL_BY_NAME [-] 0[0] - - "msg_errorback"
    //////////////////////////////////////////////////////////////////////////////////////

    Для примера приведу опкод DO_FCALL и развернутую его версию дезенда
    ++
    Оригинал (без любых модификаций пхп ) верхнего скрипта в 53 и 52
    ////////////////////////////////////////////////////////////////////////////////////
    0 2 DO_FCALL( 60) "phpinfo" $0
    1 3 ASSIGN( 38) 1 $1
    ///////////////////////////////////////////////////////////////////////////////

    Дезенд:
    //////////////////////////////////////////////////////////////////////////////////////////
    0 2 INIT_FCALL_BY_NAME( 59) "phpinfo"
    1 2 DO_FCALL_BY_NAME( 61) $0
    2 3 ASSIGN( 38) 1 $1
    ///////////////////////////////////////////////////////////////////////////////////

    Вывод: сравнить оригиналы файлов php52 и деза 52, сравнение прошло, и по содержимому был упущен 1 файл без копирайтов RM, нужно его еще включить, а также еще раз все перепроверить, и изучить где проводится предобработка опкодов, так как дезенд сейчас работает с чистым дампом опкодов, не обработанным, потому код и теряется.:facepalm:
     
  9. Any_Key

    Any_Key aka mad red cat

    Регистр.:
    30 мар 2006
    Сообщения:
    388
    Симпатии:
    344
    Отошел от будана. Праздник удался )).
    Посмотрел на сворачивание Sidxx55 кроме DO_FCALL
    ZEND_BRK (breack), ZEND_FE_FETCH (foreach), и пока не подтверждены циклы.
    Сегодня решил сделать NTS версию и начать сборку деза с ноля. Так как навносил туда для совместимости много и кое какие изменения весьма сомнительны в виду сложившийся обстановки.
     
  10. Hilo

    Hilo

    Moderator
    Регистр.:
    31 мар 2008
    Сообщения:
    911
    Симпатии:
    568
    NTS версия

    Завтра Any_Key допилит, и обновит ссылку


    От себя же пишу призыв тем, кто заинтересовался темой, и у кого есть время. Тестируйте NTS, и если есть желание, время и возможность, - подключайтесь!
     
    maio нравится это.