LZNT1

Тема в разделе "WASM.A&O", создана пользователем LZNT1, 12 июл 2005.

  1. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Хотя наверное нет. Ведь в не NT-системах этих таблиц нету. Вобщем попробую, спасибо.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Конечно можно, если грузить по адресу 0x00401000 то ничего даже менять не прийдется, если надо по другому то ссылки поправить
    Код (Text):
    1. 004016EC |.  230C9D [b]57124000[/b]  |AND     ECX,[EBX*4+[b]401257[/b]]
    2. 004016F3 |.  87D9             |XCHG    ECX,EBX
    3. 004016F5 |.  D3EE             |SHR     ESI,CL
    4. ...
    5. 00401725 |.^ E9 5BFAFFFF      |JMP     00401185
    6. 0040172A |>  4B               |DEC     EBX
    7. 0040172B |.  8B55 08          |MOV     EDX,[EBP+8]
    8. 0040172E |.  03149D [b]13124000[/b]  |ADD     EDX,[EBX*4+[b]401213[/b]]
    Табличка в дампе есть, вот она
    Код (Text):
    1. 00401213  FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00   ÿÿ..ÿÿ..ÿÿ..ÿÿ..
    2. 00401223  FF FF 00 00 00 08 00 00 00 04 00 00 00 02 00 00   ÿÿ...........
    3. 00401233  00 01 00 00 80 00 00 00 40 00 00 00 20 00 00 00   ...€...@... ...
    4. 00401243  10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ...............
    5. 00401253  00 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00   ..............
    6. 00401263  07 00 00 00 0F 00 00 00 1F 00 00 00 3F 00 00 00   .........?...
    7. 00401273  7F 00 00 00 FF 00 00 00 FF 01 00 00 FF 03 00 00   ...ÿ...ÿ..ÿ..
    8. 00401283  FF 07 00 00 FF 0F 00 00 FF 1F 00 00 FF 3F 00 00   ÿ..ÿ..ÿ..ÿ?..
    9. 00401293  FF 7F 00 00 FF FF 00 00                           ÿ..ÿÿ..
     
  3. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Что то не получается у меня. Уже начинаю сомневаться что именно им запакованы. Во вложении несколько вытянутых потоков. Попробуешь?

    [​IMG] 610090611__Streams.zip
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    LZNT1

    Во вложении несколько вытянутых потоков

    Это "MD Programm text" из ert'шек?
     
  5. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    q_q

    Ну почти. Это из MD-шника. Хотя разницы никакой нет. И там и там структурированное хранилище.
     
  6. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Ну а если есть прога, которая это реализует, куда обратится? Есть плагин для FAR, писанный на Паскале. Исходников нет. http://mdbrowser.narod.ru



    Подозреваю что распаковка идёт при помощи библиотеки unzdll.dll (специально под Дельфи), но разобраться в хитросплетении кода мне так и не удалось.



    Ещё есть erteditor. На чём писан не знаю. Он тоже текст распаковывает.

    http://plugring.farmanager.com/downld/files/erteditor.rar
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    LZNT1 Ты поищи ещё, найдешь и исходники и библиотеку ... а то получается - дайте мне то, сам незнаю чего - время потраченное впустую



    extractMd_src.rar

    gcomp_src_2.2.8.beta.zip
     
  8. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Спасибо. Пошёл разбираться.
     
  9. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Я вернулся. Извините за LZNT1 - так уж получилось, думал что 1С всё один к одному у Микрософта передирает.

    Задача усложнилась (для меня во всяком случае). Обе программы используют 1С-овскую библиотеку zlibeng.dll, которая является саморегистрирующимся COM-сервером. Секция экспорта у него пустая, а есть метод pkDecompress класса zlibEngine. Можно как нибудь добратся до адреса этого метода? Может это где то в описателе класса хранится?
     
  10. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    Слово zlib и префикс pk уж больно глаз режет :) Мона пару первых байтиков от пакованого стрима? Или саму dll? В любом случае если в длл есть строчка "incomplete dynamic bit lengths tree" то скорее всего можешь смело топать на http://www.zlib.net
     
  11. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    LZNT1

    есть erteditor. На чём писан не знаю

    На delphi



    используют 1С-овскую библиотеку zlibeng.dll ... есть метод pkDecompress ... как нибудь добратся до адреса этого метода

    Это смотрел?



    Dr.Golova

    Мона пару первых байтиков от пакованого стрима?

    Afaik не поможет ибо "Теория очень проста. Это zip с обрезанным заголовком" (из ссылки, указанной выше).
     
  12. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Dr.Golova

    http://www.wasm.ru/forum/files/610090611__Streams.zip

    zLib я вчера пробовал, только версии 1.2.2.

    Не берёт, возвращает (-3).



    q_q

    Да, он как раз после моего вопроса это и кинул :)

    Мне это подходит. Как теперь RIP-нуть (это я ночью статью прочитал :)) код распаковки?



    PS: Я кстати ночью 2 статьи прочитал (имеется ввиду с этого сайта) :) Вторая была про COM. Принцип я понял смутно, но то что добраться до VTBL можно это я усвоил. Может кто больше разбирается в этом?
     
  13. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    Да, это именно zlib :)



    > zLib я вчера пробовал, только версии 1.2.2.

    > Не берёт, возвращает (-3).



    Надо использовать недокументированную опцию nowrap (если не ошибаюсь, для этого перед распаковкой надо указать отрицательный размер окна, типа -15. подробнее написано в сорцах злиба). Тогда например из "Journal__Journal_Number391__WorkBook__MD Programm text.SBD" распаковывается текст с таким началом. Думаю тема исчерпана.
    Код (Text):
    1.  
    2. Перем Загол;
    3.  
    4. Процедура ПриОткрытии ()
    5.   ЗакладкиОтбора("ВидДокум",0,0,);
    6.   Если (ЭтоРабочаяБаза()=0) Тогда  
    7.     Форма.СтрокаСооб.Цвет(255,0,0);
    8.   ИначеЕсли (МонопольныйРежим()=1) Тогда
    9.     Форма.СтрокаСооб.Цвет(255,80,0);
    10.   Иначе
    11.     Форма.СтрокаСооб.Цвет(0,0,255);
    12.   КонецЕсли;
    13.   lib=СоздатьОбъект("Addon1C.Commands");
    14.   lib.ShowChild("",1);
    15.   lib.ShowWin(1);
    16. КонецПроцедуры
    17.  
    18. и т.д.
    19.  
     
  14. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Dr.Golova

    А какую функцию использовать? uncompress?

    Можно пример использования для MASM?
     
  15. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    LZNT1

    imo тебе надо качнуть сырцы zlib и почитать описание - все станет на свои места.
     
  16. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    infern0

    Они у меня уже есть, но я не знаю что с ними делать. :)

    Перекомпилировать? Может тот кто хорошо знает Си поможет мне, а то я в нём не силён.
     
  17. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    найти как отключать проверку заголовка в начале и целостность адлером в конце - это десяток строк закоментировать
     
  18. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
  19. LZNT1

    LZNT1 New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2005
    Сообщения:
    45
    Адрес:
    Ukraine
    Эй, кто нибудь покажет где нужно код менять? И компилятор какой использовать. У меня на работе есть VC 98. Пойдёт?
     
  20. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    LZNT1
    Код (Text):
    1. /* проверял с zlib 1.2.2 (3 October 2004)
    2. *
    3. * Document__Document_Number1213__WorkBook__MD Programm text -> failed ???
    4. * Journal__Journal_Number391__WorkBook__MD Programm text    -> success
    5. * Report__Report_Number1256__WorkBook__MD Programm text     -> success
    6. * SubList__SubList_Number33__WorkBook__MD Programm text     -> success
    7. * TypedText__Transact_Number573__MD Programm text           -> success
    8. */
    9. static void inflate_raw(unsigned char *src, unsigned long srcLen,
    10.                         unsigned char *dst, unsigned long dstLen)
    11. {
    12.   z_stream stream;
    13.  
    14.   stream.zalloc    = (alloc_func)0;
    15.   stream.zfree     = (free_func)0;
    16.   stream.opaque    = (voidpf)0;
    17.  
    18.   stream.next_in   = src;
    19.   stream.avail_in  = (uInt) srcLen;
    20.   stream.next_out  = dst;
    21.   stream.avail_out = (uInt) dstLen;
    22.  
    23.   inflateInit2(&stream, -15);  /* !!! */
    24.  
    25.   inflate(&stream, Z_FINISH);
    26.  
    27.   inflateEnd(&stream);
    28. }