OpenPtch - ViTYAN
Добавлено: 10.11.2007, 21:29
OpenPtch сокращение от Open Patch Engine это кросплатформенная переносимая библиотека для работы с двоичными файлами(или так называевыми бинарными файлами)
Для операционной системы Windows существует множество подобных решений(пач мейкеров) но вот операционные системы семейства Unix-Like не имеют подобных ютилит.
А чем не катит grep,diff,patch И sed спросите вы?
А тем что первые 3 работают только с текстовыми данными а работа с двоичными данными в sed ожидает желать лучшего(и в добавок сильно ограниченна по своим возможностям).
Плюсы приложений для Windows в том что они автоматически готовят исполняемый двоичный файл(экзэшник) для вас.
В случае же библиотеки пачи вам прийдётся компоновать самим.
Слово Open в названии проекта присутствует не просто так. Это полностью Free(подразумевается Free от FSF и GNU ну и конечно же бесплатность) библиотека с открытым исходным кодом который будет распространяться под GPL лицензией.
И так базовая информация: о коде проекта:
Язык программирования: C
Соответствие стандартам:Standard "C" Specification C90/C99, The Single UNIX Specification, Version 2
Система компоновки: GNU GCC 3.X/4.X(Возможно и 2.9X тоже пойдёт)/MSVC
Для тех кто после всего объяснения о проекте так и не понял что
такое OpenPtch...
OpenPtch это не пач!!! OpenPtch это библиотека разработчика для обработки двоичных файлов.
OpenPtch работает только с файлами и паттэрнами.
Что такое Valve,TF2,CSS и прочая байда OpenPtch не имеет понятия.
В краце OpenPtch это решение для профессионалов(реверсеров,модификаторов,переводчиков) которые знают что и где они хотят менять(OpenPtch не создаёт паттэрны и не включает их в себя - их создаёте вы сами и используйте его API для их поиска и замены в конечном файле) а не для конечных пользователей которые кроме как нажать на иконки два раза ничего в жизни не смыслят...
Информация о библиотеке:
Поддерживается работа с гигантскими массивами данных(свыше 4-ёх ГБ)
Загрузка файла в память происходит сразу и целиком(Поэтому вам понадобится памяти минимум в размер загружаемого файла - Попробуйте грузануть 3 ГБ :D)
Поддерживаются паттэрны с Wildcards(?) а так же полубайтовые паттэрны(HB Patterns) на пример A? 6C ?8 ??(HB не поддерживают даже самые продвинутые мастдайные Hex редакторы и пач мейкеры).
И много чего ещё :D
TODO:
Составление API документации.
ViTYAN's OpenPtch Advanced Portable Library v1.18 RC5
Оффициальная страничка OpenPtch на ресурсе SourceForge
Лицензия:GPLv3
Ограничения накладываемые этой лицензией: Свобода расспространения,модификации и использования кода в других GPL проектах.
Использование библиотеки в проприетарных(не обязательно платных. проприетарными считаются так же бесплатные приложения распространяющиеся с закрытым исохдном кодом или имеющие тяжёлые лицензии копирайта).
Список бешенных(:D) изменений:
1.0
Первый релиз
1.01
Изменён код для улучшения переносимости.
Определены доп дэфы:
При компиляции под Винду:
Определите дэф _WIN32_ или __WIN32__
Если используется Microsoft Visual C то в добавок определите ещё _MSVC_ или __MSVC__
1.1
Изменён код для улучшения переносимости.
Теперь нету надобности специальных дэфиниций для определённых компоновщиков. OpenPtch будет собираться с помощью GCC и MSVC без всяких проблем(так же MSVC не будет жаловаться на использование стд функций для работы со строками и файлами а не их MS *_secure альтернатив - переносимость превыше всего. MS всего лишь ведёт пропаганду для внедрения своих закрытых имплементаций)
1.15
Добавлена поддержка анализа и получения информации с испольняемых файлов PE-COFF и ELF-COFF(как двоичных испольняемых так и библиотек и объектных файлов)
1.17
Добавлена поддержка логических и опциональных блоков дающая
мощное расширение функциональности и увеличивающее гибкость OpenPtch посравнению с закрытыми конкурирующеми имплементациями.
В процессе работы над 1.17 был расширен диапазон знаков пропуска(так сказать форматные знаки смысл которых сделать пользовательский паттэрн более читаемым для разработчика.В первой версии для этого служил только пробел.
Теперь для этой цели кроме пробела могут служить так же следующие знаки:
. , : ; - _
Wildcards которые обозначались стандартным ? теперь могут обозначаться также и с помощью *.
Между бэтами,RC происходят изменения новых введённых API так что функции которые были в прошлых оффициальных версиях полностью обратно совместимы со старыми версиями но вероятно поддерживают новые расширения. Между же бэтами,RC и финалом возможны изменения API новых интерфейсов приводящие к полной несовместимости и требующие изменения кода использующих OpenPtch приложений. С выходом же финала API стабилизируется и больше не меняется.
1.18 - RC3
В процессе работы над RC версиями 1.18 были поправлены некоторые недоработки и баг появившийся в 1.17 - логические и опциональные блоки не функционировали в Байтовых паттэрнах(Только в полубайтовых).
Добавлена поддержка текстового блока(можно использовать ANSI текст напрямую в паттэрне) с оператором `text`.
Усовершенствован двоичный анализ файлов PE и ELF.
Теперь к функции анализа формата двоичного файла добавлены расширенные функции для PE и ELF соответственно которые предоставляют важную информацию из двоичного файла.
1.18 - RC4-Int1
Функция анализа ELF файлов теперь поддерживает вычисления смещения между физическим адресом в файле и виртуальным адресом в памяти относительно адреса загрузки(Я нзавал этот параметр Base).
1.18 - RC4-Int2
Исправлен баг в функции дополнительного анализа PE файлов
Функция анализа PE файлов теперь принимает один параметр Base.
Функция анализа ELF файлов тперь поддерживает передачу NULL для параметров (*1)Base,SectionTable и ProgramHeaderTable.
Добавлена поддержка определения прекомпоновщика NOLIBBUILD позволяющая собирать OpenPtch как часть программы а не как библиотеку.
(*1) - Именно после этого изменения стал происходить некорректный доступ к памяти при передаче Base=NULL так как в конце функции использовался reference на Base без его проверки что приводило к вылету программ использующих эту версию OpenPtch и передающих Base=NULL функции OPPEGetAdditionalInfo.
1.18 - RC5
Проблема (*1) исправлена.
Для операционной системы Windows существует множество подобных решений(пач мейкеров) но вот операционные системы семейства Unix-Like не имеют подобных ютилит.
А чем не катит grep,diff,patch И sed спросите вы?
А тем что первые 3 работают только с текстовыми данными а работа с двоичными данными в sed ожидает желать лучшего(и в добавок сильно ограниченна по своим возможностям).
Плюсы приложений для Windows в том что они автоматически готовят исполняемый двоичный файл(экзэшник) для вас.
В случае же библиотеки пачи вам прийдётся компоновать самим.
Слово Open в названии проекта присутствует не просто так. Это полностью Free(подразумевается Free от FSF и GNU ну и конечно же бесплатность) библиотека с открытым исходным кодом который будет распространяться под GPL лицензией.
И так базовая информация: о коде проекта:
Язык программирования: C
Соответствие стандартам:Standard "C" Specification C90/C99, The Single UNIX Specification, Version 2
Система компоновки: GNU GCC 3.X/4.X(Возможно и 2.9X тоже пойдёт)/MSVC
Для тех кто после всего объяснения о проекте так и не понял что
такое OpenPtch...
OpenPtch это не пач!!! OpenPtch это библиотека разработчика для обработки двоичных файлов.
OpenPtch работает только с файлами и паттэрнами.
Что такое Valve,TF2,CSS и прочая байда OpenPtch не имеет понятия.
В краце OpenPtch это решение для профессионалов(реверсеров,модификаторов,переводчиков) которые знают что и где они хотят менять(OpenPtch не создаёт паттэрны и не включает их в себя - их создаёте вы сами и используйте его API для их поиска и замены в конечном файле) а не для конечных пользователей которые кроме как нажать на иконки два раза ничего в жизни не смыслят...
Информация о библиотеке:
Поддерживается работа с гигантскими массивами данных(свыше 4-ёх ГБ)
Загрузка файла в память происходит сразу и целиком(Поэтому вам понадобится памяти минимум в размер загружаемого файла - Попробуйте грузануть 3 ГБ :D)
Поддерживаются паттэрны с Wildcards(?) а так же полубайтовые паттэрны(HB Patterns) на пример A? 6C ?8 ??(HB не поддерживают даже самые продвинутые мастдайные Hex редакторы и пач мейкеры).
И много чего ещё :D
TODO:
Составление API документации.
ViTYAN's OpenPtch Advanced Portable Library v1.18 RC5
Оффициальная страничка OpenPtch на ресурсе SourceForge
Лицензия:GPLv3
Ограничения накладываемые этой лицензией: Свобода расспространения,модификации и использования кода в других GPL проектах.
Использование библиотеки в проприетарных(не обязательно платных. проприетарными считаются так же бесплатные приложения распространяющиеся с закрытым исохдном кодом или имеющие тяжёлые лицензии копирайта).
Список бешенных(:D) изменений:
1.0
Первый релиз
1.01
Изменён код для улучшения переносимости.
Определены доп дэфы:
При компиляции под Винду:
Определите дэф _WIN32_ или __WIN32__
Если используется Microsoft Visual C то в добавок определите ещё _MSVC_ или __MSVC__
1.1
Изменён код для улучшения переносимости.
Теперь нету надобности специальных дэфиниций для определённых компоновщиков. OpenPtch будет собираться с помощью GCC и MSVC без всяких проблем(так же MSVC не будет жаловаться на использование стд функций для работы со строками и файлами а не их MS *_secure альтернатив - переносимость превыше всего. MS всего лишь ведёт пропаганду для внедрения своих закрытых имплементаций)
1.15
Добавлена поддержка анализа и получения информации с испольняемых файлов PE-COFF и ELF-COFF(как двоичных испольняемых так и библиотек и объектных файлов)
1.17
Добавлена поддержка логических и опциональных блоков дающая
мощное расширение функциональности и увеличивающее гибкость OpenPtch посравнению с закрытыми конкурирующеми имплементациями.
В процессе работы над 1.17 был расширен диапазон знаков пропуска(так сказать форматные знаки смысл которых сделать пользовательский паттэрн более читаемым для разработчика.В первой версии для этого служил только пробел.
Теперь для этой цели кроме пробела могут служить так же следующие знаки:
. , : ; - _
Wildcards которые обозначались стандартным ? теперь могут обозначаться также и с помощью *.
Между бэтами,RC происходят изменения новых введённых API так что функции которые были в прошлых оффициальных версиях полностью обратно совместимы со старыми версиями но вероятно поддерживают новые расширения. Между же бэтами,RC и финалом возможны изменения API новых интерфейсов приводящие к полной несовместимости и требующие изменения кода использующих OpenPtch приложений. С выходом же финала API стабилизируется и больше не меняется.
1.18 - RC3
В процессе работы над RC версиями 1.18 были поправлены некоторые недоработки и баг появившийся в 1.17 - логические и опциональные блоки не функционировали в Байтовых паттэрнах(Только в полубайтовых).
Добавлена поддержка текстового блока(можно использовать ANSI текст напрямую в паттэрне) с оператором `text`.
Усовершенствован двоичный анализ файлов PE и ELF.
Теперь к функции анализа формата двоичного файла добавлены расширенные функции для PE и ELF соответственно которые предоставляют важную информацию из двоичного файла.
1.18 - RC4-Int1
Функция анализа ELF файлов теперь поддерживает вычисления смещения между физическим адресом в файле и виртуальным адресом в памяти относительно адреса загрузки(Я нзавал этот параметр Base).
1.18 - RC4-Int2
Исправлен баг в функции дополнительного анализа PE файлов
Функция анализа PE файлов теперь принимает один параметр Base.
Функция анализа ELF файлов тперь поддерживает передачу NULL для параметров (*1)Base,SectionTable и ProgramHeaderTable.
Добавлена поддержка определения прекомпоновщика NOLIBBUILD позволяющая собирать OpenPtch как часть программы а не как библиотеку.
(*1) - Именно после этого изменения стал происходить некорректный доступ к памяти при передаче Base=NULL так как в конце функции использовался reference на Base без его проверки что приводило к вылету программ использующих эту версию OpenPtch и передающих Base=NULL функции OPPEGetAdditionalInfo.
1.18 - RC5
Проблема (*1) исправлена.