Сумма технологий
#1
Отправлено 14 February 2006 - 18:30
Цитата |
1) да переделать мне не проблема. мне бы сам 3дмарк... 2) пишу я на с++ |
Я могу без проблем переписать любую программу с исходными кодами у себя на сайте на "ANSI C", если тебе нужно.
Цитата |
была в свое время идея сделать движок выдирательный. для чего переделать мр. риппер. потом на основе этого движка делать софт. тут тебе и плагины к менеджерам, и ГУЙня, и консольный изврат, и т.п. |
А что с этой идеей теперь?..
Цитата |
кстати, насчет усовершенствования мр. риппера... для этого многого не надо: просто писать к нему плагины и все. |
Ой, мне лень в формате разбираться, так что только могу предложить переписанние на Си программ.
Siberian_GRemlin!
Цитата |
Зачем опять всё начинать сначала?! По-моему, самый лучшиый вариант - развивать GAUP, я автору всячески помогаю чем могу... В вашем же случае можно и соавторами стать, я думаю. |
Это, как я понял из дальнейшего разговора, задрючка к Total Commander?.. Не, я всё-таки тогда уж за FAR - тот хоть цивилизованней выглядит. ИМХО.
В общем это да - так и будет борьба - одни за FAR, другие за Total Commander.
Возможно реально стоит заняться переделкой Mr.Ripper'а или замутить новый под GUI?.. Тоже с открытыми исходниками и все дела.
Далее возник второй вопрос - сумма уже существующих технологий.
Как тут народ относится к тому, что их программы (особенно с закрытыми исходниками) будут использовать (ссылка на автора + его сайт будет) для создания одного нормального конвертера/экстрактора вместо кучи мелких, которые нужно в строго определённом порядке применять? Просто я смотрю как сейчас народ в Интернете с нашими распаковщиками парится - аж смешно. (*улыбается*) Так как их юзают в основном очень непродвинутые пользователи (каковые составляют большую часть всех пользователей). Хотелось бы точно услышать по этому поводу мнения JTommy и VAG'а (хотя последний, скорее всего, опять на всё забьёт).
Народ! Прошу всех подключиться к этому вопросу, да и вообще к теме.
P.S. CrOm! Я не знал, что твой Mr.Ripper умеет Bink Video и Smacker Video вытаскивать (это я к теме из музыки от Total Overdouse)... Буду знать. (*улыбается*)
P.P.S. JTommy! А зачем у тебя на сайте в таблице к программам графа "исходники", если их ни для одной программы нет? (*улыбается*)
#2
Отправлено 15 February 2006 - 04:29
насчет технологий: тут главное хорошо оптимизированый поисковый движок и всякие фенечки, типа сплитера, поиска по сигнатурам, выделений участков, поддержка различных методов упаковки
мой поисковый движок не претендует на звание самый быстрый, хоть он и неплохо справляется со своими обязаностями. его можно взять откуда-нибудь еще.
далее: поддержка форматов - самая гибкая функциональность у плагинов. интерфейс плагинов мр. риппера меня не очень радует, но переделывать я его не стал из-за соображений совместимости. в новом распаковщике надо обдумать этот вариант досконально, чтобы потом не мучаться
риппер поддерживает довольно таки много игр и просто форматов. более 60% это мои собственные раскопки, остальное собиралось по просторам инета. честно сказать, информации про современные форматы очень мало в инете, поэтому необходим человек, а лучше группа людей, которые бы неплохо специализировались на определенных типах ресурсов. например, как Guru или VAG на музыкальных, а Terminius на графических.
возможность обратной упаковки: вообще-то ранние версии мр. риппера умели упаковывать некоторые форматы, но я временно отключил эту функцию из-за глючности и тормознутости. вобщем тут надо еще поразмыслить, как лучше делать сей процесс...
форматы сжатия: мр. риппер умеет работать с форматами ZLib, deflate, LZSS, PKWare (некоторое было взято из Stuns)
методы шифрации: ну в основном это xor. и вот еще в C&C - Blowfish. вообще я не хакер, поэтому методами реверсивной инженерии не могу выяснить используемый метод шифрации. да и если и знать этот метод, то необходимо к томуже знать где лежат ключи и т.п. вообщем для меня это темный лес
вобщем вот: широкое поле для деятельности. кто этим и, главное, как и когда будет заниматься? сложно сказать. у меня сейчас очень мало времени я могу только понемногу помогать там, да сям... Terminius тоже погрузился в дела семейные, да в в разработку игры. Guru и VAG забили давно на все и, скорее всего, не буду учавствовать. максимум, что у них можно попросить - исходники их программ, что тоже маловероятно. остаетесь вы: -=CHE@TER=- и jTommy.
да, еще. я против разработки монолитного GUI-софта. нужен именно рип-движок, чтобы на его основе делать софт. мне на много удобнее ковырять файлы из FAR. у меня там под ругой весь инструментарий: сам мистер риппер, hex-viewer/editor, калькулятор с автоматическим пересчетом в hex и др... ну, я думаю, меня поняли.
тыркать мышью это настолько неудобно, что сложно описать. софт такого типа только для начинающих. а рип-движок будет подразумевать, что независимо от оболочки результат будет один и тотже.
как пример: архиватор 7zip. у него есть движок, и на его основе и гуйня и консольная версия и плагин к фару. очень удобно для всех
#3
Отправлено 15 February 2006 - 12:10
1. Mr.Ripper (446)
2. LithUnwrap v1.3 (435)
3. MultiEx Commander (373)
4. Dragon Unpacker (370)
5. Game File Explorer v1.32 (351)
6. FMV-Extractor v1.3 beta 1 (317)
7. Need For Speed : Undeground music extractor v1.0.0 (290)
8. Magic Extractor (261)
9. Resource Game Viewer v1.0 (252)
10. eXe Scope v6.30 (216)
#4
Отправлено 15 February 2006 - 16:20
Цитата |
Как тут народ относится к тому, что их программы (особенно с закрытыми исходниками) будут использовать (ссылка на автора + его сайт будет) |
Я, естественно, не против. Предоставлю всю интересующую инфу.
Цитата |
JTommy! А зачем у тебя на сайте в таблице к программам графа "исходники", если их ни для одной программы нет? (*улыбается*) |
Сначала я планировал выложить исходники для большинства своих программ. Но потом решил, что лучше буду публиковать спецификации форматов. Те, кому надо, по спецификации напишут все, что им нужно. И плагиатчиков не будет . А графу пока оставил.
All:
Писать плагины к Mr.Ripper'у или GAUP конечно удобно и легко. Но, к сожалению, аудитория у Far и TC сильно ограничена. Большинство пользователей пользуют "проводник" и не знают (и не хотят знать) ничего про нормальные файловые менеджеры (например, из всех моих друзей и знакомых только двое постоянно пользуются TC и Far). При знакомстве с Far у "проводниковых" случается шок: "Оно же текстовое! Как ты этим пользуешься???! Ужас!". И, как следствие, полное неприятие Far'а (наблюдал неоднократно). Так что, это не самый оптимальный вариант.
Остается три варианта:
1. каждый выбирает понравившийся универсальный распаковщик и пишет к нему плагины. Мне пока ни один не понравился. Может, я слишком придираюсь?
2. объединяемся и пишем что-нибудь очень универсальное и очень удобное.
3. оставляем все, как есть или вообще забиваем на все это.
Как я раньше писал, я за универсальный распаковщик. Вот некоторые основные мысли:
GUI оболочка отдельно, плагины отдельно.
За основу взять интерфейсы WinRAR и немного TC(панель дисков). В оболочке обработка действий пользователя и интерфейс для плагинов. Больше ничего. Самое сложное, как и сказал CrOm - разработать правильный интерфейс для плагинов, чтобы потом его не менять.
Плагины трех видов: распаковщики/упаковщики, конвертеры, рипперы. Причем один плагин может поддерживать несколько форматов.
Все остальное это технические подробности.
CrOm:
Цитата |
нужен именно рип-движок, чтобы на его основе делать софт |
Мысль твою понял, но пока не представляю, как это реализовать. К тому же, надо поразмыслить о соотношении целесообразность/трудоемкость_реализации.
P.S.: времени у меня тоже немного, даже мало. Но от идеи не отказываюсь, время найдется.
#5
Отправлено 15 February 2006 - 16:25
Я конечно понимаю, что Ваша программа ближе к рипанию (извлеку что найду) с поддержкой форматов, но всё же, как вы предполагаете обходить подобные описанному подводные камни? Отдавать на рипание, игнорируя имеющуюся таблицу или всё же как-то её использовать?
#6
Отправлено 16 February 2006 - 19:11
Цитата |
на разработку рип-движка я забил из-за нехватки времени и лени. |
Приехали. А что - тут сейчас у кого-то много времени? Просто как бы учти, что если будешь потом всё переделывать, то ещё больше времени понадобится - так как форматы новые добавляются.
Цитата |
интерфейс плагинов мр. риппера меня не очень радует, но переделывать я его не стал из-за соображений совместимости. в новом распаковщике надо обдумать этот вариант досконально, чтобы потом не мучаться |
Что-то я не понял - ты собираешься заниматься распаковщиком или нет?..
Цитата |
общем вот: широкое поле для деятельности. кто этим и, главное, как и когда будет заниматься? сложно сказать. у меня сейчас очень мало времени я могу только понемногу помогать там, да сям... Terminius тоже погрузился в дела семейные, да в в разработку игры. Guru и VAG забили давно на все и, скорее всего, не буду учавствовать. максимум, что у них можно попросить - исходники их программ, что тоже маловероятно. остаетесь вы: -=CHE@TER=- и jTommy. |
Короче, я понял - подключаться к твоему проекту бесполезно. Нужно делать новый.
Ну вот, хоть один вопрос прояснился...
jTommy!
Цитата |
Сначала я планировал выложить исходники для большинства своих программ. Но потом решил, что лучше буду публиковать спецификации форматов. Те, кому надо, по спецификации напишут все, что им нужно. И плагиатчиков не будет . А графу пока оставил. |
А после написания программы распаковщика, тебя не ломает ещё и писать документацию по формату?.. Тем более, что если ты всё на пальцах не объяснишь, то 100% тебе на почту повалятся письма содержания "а я вот тут не понял..."
Цитата |
Остается три варианта: 1. каждый выбирает понравившийся универсальный распаковщик и пишет к нему плагины. Мне пока ни один не понравился. Может, я слишком придираюсь? 2. объединяемся и пишем что-нибудь очень универсальное и очень удобное. 3. оставляем все, как есть или вообще забиваем на все это. |
Я за второй вариант, если кто-нибудь ещё подключится. Вдоём, мы каши не сварим. Попробовать можно - мне не жалко... Но это всё будет зело долго тащиться...
Цитата |
P.S.: времени у меня тоже немного, даже мало. Но от идеи не отказываюсь, время найдется. |
Я тоже. Лучше одна программа с плагинами, чем куча мелких программ.
Sash!
Цитата |
Я конечно понимаю, что Ваша программа ближе к рипанию (извлеку что найду) с поддержкой форматов, но всё же, как вы предполагаете обходить подобные описанному подводные камни? Отдавать на рипание, игнорируя имеющуюся таблицу или всё же как-то её использовать? |
Здесь вообще-то идёт речь сейчас не только об рипере как таковом, но и об универсальном распаковщике.
Насчёт твоего вопроса - единственный способ это проверить - полностью пропарсить файл. Как? Ну например - в игре HAVOC есть файлы-псевдоархивы - .FF. Так вот - у них первые четыре байта - количество файлов в этом архиве, а затем идёт описание каждого файла - смещение (4 байта) и имя (13 байт, ASCIIZ строка). Таким образов что нужно - посчитать разницу, между смещениями - получим размеры файлов - складываем их и прибавляем к размеру этой самой таблицы - если получаем размер этого самого .FF файла - значит это валидный архив .FF, т.е. мы верно определили формат. Если же размеры не совпадаются - значит нужно другой формат пробовать.
В общем так - начинается набор всех желающих в команду для создания универсального распаковщика / конвертера / рипера.
P.S. CrOm помоги пожалуйста там человеку в Total Overdouse - он с Mr.Ripper справиться не может. (*улыбается*)
#7
Отправлено 16 February 2006 - 22:18
Цитата |
А после написания программы распаковщика, тебя не ломает ещё и писать документацию по формату?.. Тем более, что если ты всё на пальцах не объяснишь, то 100% тебе на почту повалятся письма содержания "а я вот тут не понял..." |
А я совсем коротко буду писать, примерно как здесь: http://wiki.xentax.com/index.php/GRAFs. Те, кто знакОм с распаковкой - поймут, а остальные пущай учатся.
Sash:
добавлю, что можно просто проверить смещения файлов в архиве: если хотя бы одно смещение больше размера архива - это неправильные данные.
#8
Отправлено 16 February 2006 - 23:39
хорошо. я попробую сделать рип-движок, но без посторонней помощи мне будет сложно его продвигать...
для старта необходимо обсудить API, ибо это то, что будет монументально
#9
Отправлено 17 February 2006 - 20:18
JTommy!
Ну тогда, как там Гагарин... "поехали!" (*улыбается*)
Я в стороне стоять не буду - точно.
Цитата |
для старта необходимо обсудить API, ибо это то, что будет монументально |
Так, что ты вкладываешь в понятие "API"? Взаимодействие .DLL плугинов с ядром (движком)?
Я себе это представляю так (я бы так сделал - если где не прав - по голове не бить (*улыбается*)):
у каждого плагина (как для распаковщика, так и для риппера) должно быть 3 функуции:
- для проверки архива на валидность (у риппера - сканит архив и ищет хотя бы 1 файл, для которого он предназначен)
- для получаения списка файлов (риппер даёт имена сам - типа "000.ogg", "002.ogg" и т.д.)
- функция для распаковки файла (здесь указывается его порядковый номер в списке, который возвращает предыдущая функция) - зачем всё так сложно? потому что файл в архиве может быть зашифрован (вспомните байду с Resident Evil 3) и по стандартным данным, а-ля имя+смещение+размер - его не вытащить
Т.е. человек открывает файл - сначала тот проверяется на валидность, затем получает список всех файлов и выбирает, что хочет распаковать.
Ещё такой вопрос - .DLL'ки могут хранить где-то свои какие-то переменные и данные?.. Если нет, то дамп с именами, размерами и смещениями придётся возвращать из модуля и хранить в главной программе, а затем подавать вместе с параметрами указатель на эту часть памяти в функцию распаковки файла.
Тогда ядро будет простое как репа.
Выши мысли?..
#11
Отправлено 18 February 2006 - 16:16
1. Плагин к TC, который подключает ядро
2. Плагин к FAR, который подключает ядро
3. GUI, который подключает ядро
Плагины к манагерам компилятся один раз и необновляются за редким исключением. Т.е. разрабатывается только ядро и плагины к ядру...
#12
Отправлено 18 February 2006 - 20:22
Цитата |
Из опыта могу сказать, что файловые операции с RAW данными однообразны: прочитал в буфер, распаковал/расшифровал(упаковал/зашифровал), записал в файл. Поэтому предлагаю эти операции реализовать в движке. А плагины пускай обрабатывают только служебные данные. |
Ты читал мой предыдущий пост? В теме про Resident Evil 3 можно узнать, что у этой игры очень невесёлый формат. При такой организации как ты предложил его будет невозможно распаковать (там всё на полином шифруется, который как-то хитро считается). Нужно спроектировать систему так, чтобы при появлении одной игры, с новым форматом, не пришлось заново все переделывать...
P.S. Кстати, обещанная сумма технологий:
http://www.extractor...st=90#entry8754
#13
Отправлено 19 February 2006 - 11:10
Siberian_GRemlin, у тебя есть мысли, как организовать "общение" между этими плагинами и ядром? может быть с помощью COM технологии?
#14
Отправлено 19 February 2006 - 18:57
Цитата (jTommy @ 19.02.2006 - 15:10) |
-=CHE@TER=-, действительно, я даже забыл про такие простые случаи, когда данные файлов разделены на части и сжаты отдельно. Значит надо предусмотреть варианты: в простых случаях движок сам распаковывает, в более сложных - плагин. Siberian_GRemlin, у тебя есть мысли, как организовать "общение" между этими плагинами и ядром? может быть с помощью COM технологии? |
по первому: у меня так и происходит. если формат сложный, то он извлекается плагином, если простой, то это делает сам риппер.
по второму: COM-несколько геморойная технология.
проще взять либо подход FAR, либо Winamp. В GAP используется работа в стиле винампа. в принципе удобно, я использовал в Mr.Ripper более фаровский подход. нескольно топорно получилось.
#15
Отправлено 19 February 2006 - 20:54
#17
Отправлено 24 February 2006 - 09:26
Что-то твой сайт перестал открываться...
Насчёт взаимодействия, я перефразирую немного свой пост чуть выше. Моё видение его выглядит примерно так:
У каждого плагина (как для распаковщика, конвертера, так и для риппера) должно быть три таких вот функуции:
- для проверки архива на валидность
а) риппера - сканит архив и ищет хотя бы 1 файл, для которого он предназначен
б) экстрактор - просто проверяет нужного ли архив формата
в) конвертер - делает примерно тоже, что и экстрактор (иначе как конвертировать?)
- для получаения списка файлов (риппер даёт имена сам - типа "000.ogg", "002.ogg" и т.д.), конвертеру это не нужно - так как ему подаются данные, а он их конвертирует
*замечание: при получении списка файлов, наверх (т.е. вызвавшей модуль программе), подаются ТОЛЬКО имена файлов. Вся структура должна храниться внутри временных переменных плагина. Он сам уже, в зависимости от них, решает как распаковывается или расшифровывается файл.
- функция для распаковки файла (здесь указывается его порядковый номер в списке, который возвращает предыдущая функция). Конвертеру в этом случае просто суётся под нос уже готовые данные, прочитанные в память, а он возвращяет указатель на уже сконвертированные данные
Примерно так...
#18
Отправлено 24 February 2006 - 19:02
должна экспортироваться всего 1 функция, которая вернет структуру, поля которой указатели на функи плагина.
функи плагина:
анализ буфера на наличие знакомый сигнатур.
если сигнатура опознана, то в ответ возвращается расширение. движок уже сам приколбазит имя наподобие 00001.ххх
если файл - архив, то возвращается список содержимого этого архива
если ниче не найдено, то ниче не возвращаем
еще нужны функи для конвертирования и распаковки
ну и пара сервисных - вирнуть абаут, почистить память и т.п.
#19
Отправлено 24 February 2006 - 19:03
#20
Отправлено 25 February 2006 - 12:17
Цитата |
Что-то твой сайт перестал открываться... |
Это by.ru падает. Надо на нормальный хостинг переходить.
Цитата |
а) риппера - сканит архив и ищет хотя бы 1 файл, для которого он предназначен |
это может занять очень много времени. я считаю - у риппера вообще не должно быть такой функции. представляешь, что будет, если рипперу попадутся архивы Fahrenheit'а, например? к тому же в gui оболочке скорее всего будет функция автосканирования, как в графических вьюверах.
Цитата |
*замечание: при получении списка файлов, наверх (т.е. вызвавшей модуль программе), подаются ТОЛЬКО имена файлов. |
ну, не только имена. нужно передавать еще размеры, смещение, алгоритм сжатия. а то gui получится совсем не информативный.
Цитата |
Вся структура должна храниться внутри временных переменных плагина |
С тем, что движок ничего не должен знать про формат архива или ресурса я согласен.
Вот две основные мысли, которыми я руководствуюсь:
1. gui оболочка (а также Far и TC) должна предоставлять не только список имен, но и другую полезную (и не очень) информацию. Не надо ограничивать любопытство пользователя. А то у нас получится проект только для юзеров.
2. Движок должен предоставлять плагинам некоторые сервисы и освобождать авторов плагинов от рутины. Иначе это будет не движок и просто точка обмена данными между UI и плагинами.
А там уже пускай плагинописатели решают, пользовать эти сервисы или писать свой код.
Приведу простой пример, алгоритм поиска сигнатур в файлах: их можно искать так: if (buf[i]='R') and (buf[i+1]='I') and (buf[i+2]='F') and (buf[i+3]='F') then... а можно посмотреть теорию и узнать, что есть, к примеру, алгоритм Бойлера-Мура(если неправильно написал, поправьте) который намного быстрее, но и сложнее. И чтобы авторы рипперов не писали один и тотже рутинный код, в движке должен быть этот или другой, более продвинутый, алгоритм.