LINUX.ORG.RU

Изучение неизвестного формата файла


0

0

В природе видел много вариантов поддержки сторонним ПО недокументированных форматов. Вопрос как это делается, как можно изучить структуру неизвестного файла для обеспечения поддержки его в своей программе.

★★★★★

Ответ на: комментарий от ShTH

На сколько я знаю реверс инженеринг не кисло так связан с дисасемблированием и изучением что-же там делает программка, а нету подхода без запуска и изучения этого быдлокода, есть ли способ расковырять файлик который оно жрёт, тем более точно известно что в нём хранятся картинки? да и libpng.dll в составе программы как бэ намекает что там, осталось только расковырять как именно оно там хранится.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

Программа-то работает и пишет в файл. Интересно, что за такой формат, который вы хотите зареверсить без парсера для него?

ShTH
()
Ответ на: комментарий от ShTH

Программа-то работает и пишет в файл. Интересно, что за такой формат, который вы хотите зареверсить без парсера для него?

Не поверите на данный момент (не первый раз захотелось сделать что-то подобное и сдругими прогами, но решил поглубже копнуть только сейчас) меня интересует VirtuaGirlHD. Очень нравится мне идея этой программки, люблю я такие штучки, но вот как всегда только под венду, а в вайне оно пашет мягко говоря неприглядно, данных оно в файлы не пишет они статичны, понаблюдав за работой в вайне я пришёл к выводу что работает оно так, читает из файла рисунки, каждый есть кадр, и пере создавая окно их отображает (потому-то в вайне и пашет абы как, окно мерцает это свойственно старой версии, версия hd вообще не завелась, но судя по всему принцип работы тот же). Вот её контент и хочу использовать в своей программе. Мне кажется что можно расковырять эти файлы и без изучения самой проги, что было бы куда как проще.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

Да, по идее можно. Не исключаю, что там всё закодировано в какой-нибудь jpeg и склеено в хитрожопый формат. Может попробовать отрезать от него куски разного размера помощью dd и поэкспериментировать с ними?

(опыта подобного не имел, первое что пришло в голову).

ShTH
()
Ответ на: комментарий от ShTH

Я ж говорю там есть libpng.dll, осталось разобраться как читать этот файл, я думаю куски могут быть разного размера, не могу никак придумать как его читать из своей программы.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

там ещё zlib.dll есть, но я думаю это зависимость libpng, png как раз им и пожимается, думаю пережимать второй раз в голову им не приходило.

erfea ★★★★★
() автор топика
Ответ на: комментарий от GArik

Расковыряй программу, посмотри как происходит вызов функций libpng, с какими параметрами.

Осталось научиться в лялихе расковыривать вендовые проги, есть ссылки на учебные материалы?

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

> Осталось научиться в лялихе расковыривать вендовые проги, есть ссылки на учебные материалы?

Addison Wesley, Exploiting Software, глава 3.

GArik ★★★
()
Ответ на: комментарий от erfea

есть отличный дизассемблер для линуксов. называется ht

понимает кучу форматов, PE масдайный, эльф линуксовый итп итд.

вобщем для тебя оно маст хэв.

ЗЫ советую не просто так, сам юзаю время от времени. ничего лучше пока еще невстречал даже под вендами.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

есть отличный дизассемблер для линуксов. называется ht

Всё бы ничего, только в ассемблере я не силён(

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

добро пожаловать в мир реверс инженеринга, без знаний ассемблера будет весьма туго.

рекомендую посетить сайте wasm.ru

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

Ну изучить ассемблер я не против, но данный момент это не кстати. Да и прикинь сколько времени я буду ковыряться чтобы решить такую простую задачу. И всё же хотелось бы узнать не уж то и правда нету способа проще расковырять этот чёртов файл, известно же даже что в нём хранится.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

это не простая задача =)

проще будет дизассемблировать программу работающую с данным форматом, отловить все функции которые используются для работы с этим файлом.

И уже исходя из этого делать выводы по формату. Не думаю что там больше десяти функций используется.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

Я думаю ты понимаешь, что для человека имеющего опыт только в языках высокого уровня дизассемблировать программу и изучить работу всего-то десяти функций (не забываем, что надо ещё будет выяснить каких именно) задача из области фантастики. )))

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

я еще раз повторюсь, хочешь заниматься реверс инженерингом, учи ассемблер.

ЗЫ не так страшен ассемблер как его малюют =)

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

не так страшен ассемблер как его малюют =)

кто ж сказал что я его боюсь?! просто для решения стоящей сейчас задачи мне предётся сначала ооочень долго учиться))) изучение ассемблера посложнее чем любого другого языка, опыт полученный из языков высокого уровня, не ускорит процесс изучения ассемблера.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

>просто для решения стоящей сейчас задачи мне предётся сначала ооочень долго учиться)))

без ассемблера ты еще больше промучишься.

mono ★★★★★
()
Ответ на: комментарий от mono

Значит придётся отложить в долгий ящик, сейчас мне как-то не до освоения ассемблера, если б это был очередной язык высокого уровня...

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

ты что сдесь сидишь и плачешься? думаешь кто-то возьмет и вделает все за тебя? иди подрочи уже - полегчает

anonymous
()
Ответ на: комментарий от erfea

Можешь попробовать сигнатуры zip и png в файлах ресурсов поискать. Я так расковырял несколько форматов в своё время. Обычно в виндовых играх делают ресурсы типа виртуальной папки, то есть файлы упаковывают зипом, либо напрямую пишут в один файл с достаточно простыми структурами, где обязательно есть адрес начала (или смещение) файла находящегося в пакете. На простые ресурсы максимум день

maxxant
()
Ответ на: комментарий от erfea

ТС тебе в любом случае придется столкнуться с ассемблером как ни крути.

MikeDM ★★★★★
()
Ответ на: комментарий от maxxant

Можешь попробовать сигнатуры zip и png в файлах ресурсов поискать.

Поискал, что не видать их там.

erfea ★★★★★
() автор топика
Ответ на: комментарий от MikeDM

>ничего лучше пока еще невстречал даже под виндами

надеюсь, вы пользовались IDA'ой, прежде чем высказывать подобное

nnm
()

расковырять формат дело не такое уж и сложное и вариантов тут куча начиная с банального рассматривания файла hex-editor'ом вплоть до подмены системных вызовом своими функциями. дисассемблить вовсе не обязательно, хотя без асма ты всё ж далеко не уедеш.

для начала можеш подменить read/write/lseek & Co. (или как оно там в винде называется) своими обёртками и смотри себе в удовольствие где и что оно там читает/пишет.

beastie ★★★★★
()
Ответ на: комментарий от erfea

«Полдня протренируемся, потом за пять минут долетим» (ц) (Вроде бы где-то так)

Xenesz ★★★★
()
Ответ на: комментарий от nnm

>>ничего лучше пока еще невстречал даже под виндами

надеюсь, вы пользовались IDA'ой, прежде чем высказывать подобное


Похоже, что вы оба даже не слышали про ollydbg.

Biga
()
Ответ на: комментарий от Biga

Похоже, что ты сам не знаешь, что это такое)

AF ★★★
()

Попробуй Mr.Ripper в Far, вдруг покажет чего. Да-да, оффтопик, я в курсе, просто юзал его когда-то для подобных целей, и он даже что-то нашел.

vga ★★
()
Ответ на: комментарий от nnm

> ollydbg - отладчик, лол. Разговор шел о дизассемблерах

Ну и научите меня, чем в данном случае дизассемблер будет полезнее топикстартеру, чем отладчик?

Biga
()
Ответ на: комментарий от goose

тоже (точнее даже первое, что следует сделать), но у ТС программа вроде виндяшная и я не знаю есть ли там такое

beastie ★★★★★
()

Ладно, что так файл расковырять не получится уже понял, придётся отложить, в ближайшее время начну изучать ассемблер, радует что не с нуля, немного понимаю.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

Кстати раз уж на то пошло, может кто-то подкинет литературу что-то типа ассемблер для дебилов, желательно что-то практичное, а не для написания лаб по информатике.

erfea ★★★★★
() автор топика
Ответ на: комментарий от fluorite

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

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

Кстати, на какой синтаксис ориентироваться, для поставленной выше задачи я так понимаю вендузятники юзают intel, но я хочу работать в linux потому вопрос смогу ли я нормально расковырять эту прогу (пересобирать её всё равно не буду) дизассемблером в AT&T? Заранее отвечу почему хочу именно этот синтаксис (если возникнет), хотел ассемблер учить уже давно и естественно именно этот синтаксис т.к. в ковыряниях ядра и просмотре получающегося кода g++ -S на практике приходится столкнуться именно с ним.

erfea ★★★★★
() автор топика
Ответ на: комментарий от erfea

постучись в жаббер mikedm Сцабако jabber.ru

дам доку по ассемблеру. на русском.

MikeDM ★★★★★
()
Ответ на: комментарий от nnm

[quote]

ничего лучше пока еще невстречал даже под виндами

надеюсь, вы пользовались IDA'ой, прежде чем высказывать подобное [/quote]

забыл добавить - Из свободных программ.

MikeDM ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.