Конечно можно, если грузить по адресу 0x00401000 то ничего даже менять не прийдется, если надо по другому то ссылки поправить Код (Text): 004016EC |. 230C9D [b]57124000[/b] |AND ECX,[EBX*4+[b]401257[/b]] 004016F3 |. 87D9 |XCHG ECX,EBX 004016F5 |. D3EE |SHR ESI,CL ... 00401725 |.^ E9 5BFAFFFF |JMP 00401185 0040172A |> 4B |DEC EBX 0040172B |. 8B55 08 |MOV EDX,[EBP+8] 0040172E |. 03149D [b]13124000[/b] |ADD EDX,[EBX*4+[b]401213[/b]] Табличка в дампе есть, вот она Код (Text): 00401213 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 ÿÿ..ÿÿ..ÿÿ..ÿÿ.. 00401223 FF FF 00 00 00 08 00 00 00 04 00 00 00 02 00 00 ÿÿ........... 00401233 00 01 00 00 80 00 00 00 40 00 00 00 20 00 00 00 ...€...@... ... 00401243 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 00401253 00 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 .............. 00401263 07 00 00 00 0F 00 00 00 1F 00 00 00 3F 00 00 00 .........?... 00401273 7F 00 00 00 FF 00 00 00 FF 01 00 00 FF 03 00 00 ...ÿ...ÿ..ÿ.. 00401283 FF 07 00 00 FF 0F 00 00 FF 1F 00 00 FF 3F 00 00 ÿ..ÿ..ÿ..ÿ?.. 00401293 FF 7F 00 00 FF FF 00 00 ÿ..ÿÿ..
Что то не получается у меня. Уже начинаю сомневаться что именно им запакованы. Во вложении несколько вытянутых потоков. Попробуешь? 610090611__Streams.zip
Ну а если есть прога, которая это реализует, куда обратится? Есть плагин для FAR, писанный на Паскале. Исходников нет. http://mdbrowser.narod.ru Подозреваю что распаковка идёт при помощи библиотеки unzdll.dll (специально под Дельфи), но разобраться в хитросплетении кода мне так и не удалось. Ещё есть erteditor. На чём писан не знаю. Он тоже текст распаковывает. http://plugring.farmanager.com/downld/files/erteditor.rar
LZNT1 Ты поищи ещё, найдешь и исходники и библиотеку ... а то получается - дайте мне то, сам незнаю чего - время потраченное впустую extractMd_src.rar gcomp_src_2.2.8.beta.zip
Я вернулся. Извините за LZNT1 - так уж получилось, думал что 1С всё один к одному у Микрософта передирает. Задача усложнилась (для меня во всяком случае). Обе программы используют 1С-овскую библиотеку zlibeng.dll, которая является саморегистрирующимся COM-сервером. Секция экспорта у него пустая, а есть метод pkDecompress класса zlibEngine. Можно как нибудь добратся до адреса этого метода? Может это где то в описателе класса хранится?
Слово zlib и префикс pk уж больно глаз режет Мона пару первых байтиков от пакованого стрима? Или саму dll? В любом случае если в длл есть строчка "incomplete dynamic bit lengths tree" то скорее всего можешь смело топать на http://www.zlib.net
LZNT1 есть erteditor. На чём писан не знаю На delphi используют 1С-овскую библиотеку zlibeng.dll ... есть метод pkDecompress ... как нибудь добратся до адреса этого метода Это смотрел? Dr.Golova Мона пару первых байтиков от пакованого стрима? Afaik не поможет ибо "Теория очень проста. Это zip с обрезанным заголовком" (из ссылки, указанной выше).
Dr.Golova http://www.wasm.ru/forum/files/610090611__Streams.zip zLib я вчера пробовал, только версии 1.2.2. Не берёт, возвращает (-3). q_q Да, он как раз после моего вопроса это и кинул Мне это подходит. Как теперь RIP-нуть (это я ночью статью прочитал ) код распаковки? PS: Я кстати ночью 2 статьи прочитал (имеется ввиду с этого сайта) Вторая была про COM. Принцип я понял смутно, но то что добраться до VTBL можно это я усвоил. Может кто больше разбирается в этом?
Да, это именно zlib > zLib я вчера пробовал, только версии 1.2.2. > Не берёт, возвращает (-3). Надо использовать недокументированную опцию nowrap (если не ошибаюсь, для этого перед распаковкой надо указать отрицательный размер окна, типа -15. подробнее написано в сорцах злиба). Тогда например из "Journal__Journal_Number391__WorkBook__MD Programm text.SBD" распаковывается текст с таким началом. Думаю тема исчерпана. Код (Text): Перем Загол; Процедура ПриОткрытии () ЗакладкиОтбора("ВидДокум",0,0,); Если (ЭтоРабочаяБаза()=0) Тогда Форма.СтрокаСооб.Цвет(255,0,0); ИначеЕсли (МонопольныйРежим()=1) Тогда Форма.СтрокаСооб.Цвет(255,80,0); Иначе Форма.СтрокаСооб.Цвет(0,0,255); КонецЕсли; lib=СоздатьОбъект("Addon1C.Commands"); lib.ShowChild("",1); lib.ShowWin(1); КонецПроцедуры и т.д.
infern0 Они у меня уже есть, но я не знаю что с ними делать. Перекомпилировать? Может тот кто хорошо знает Си поможет мне, а то я в нём не силён.
найти как отключать проверку заголовка в начале и целостность адлером в конце - это десяток строк закоментировать
Эй, кто нибудь покажет где нужно код менять? И компилятор какой использовать. У меня на работе есть VC 98. Пойдёт?
LZNT1 Код (Text): /* проверял с zlib 1.2.2 (3 October 2004) * * Document__Document_Number1213__WorkBook__MD Programm text -> failed ??? * Journal__Journal_Number391__WorkBook__MD Programm text -> success * Report__Report_Number1256__WorkBook__MD Programm text -> success * SubList__SubList_Number33__WorkBook__MD Programm text -> success * TypedText__Transact_Number573__MD Programm text -> success */ static void inflate_raw(unsigned char *src, unsigned long srcLen, unsigned char *dst, unsigned long dstLen) { z_stream stream; stream.zalloc = (alloc_func)0; stream.zfree = (free_func)0; stream.opaque = (voidpf)0; stream.next_in = src; stream.avail_in = (uInt) srcLen; stream.next_out = dst; stream.avail_out = (uInt) dstLen; inflateInit2(&stream, -15); /* !!! */ inflate(&stream, Z_FINISH); inflateEnd(&stream); }