CSmania.RU

Универсальный русскоязычный портал о Counter-Strike
Предыдущее посещение: Вс мар 23, 2008 6:20 am Текущее время: Вс мар 23, 2008 6:20 am

Часовой пояс: UTC




 [ Сообщений: 43 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: OpenPtch - ViTYAN
СообщениеДобавлено: Сб ноя 10, 2007 6:29 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
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) исправлена.


Последний раз редактировалось vityan666 Вс янв 20, 2008 10:59 pm, всего редактировалось 15 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 10, 2007 11:18 pm 
Не в сети
Сержант
Сержант
Аватара пользователя

Зарегистрирован: Чт янв 18, 2007 2:58 am
Сообщений: 81
А оно готово уже? :o


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 10, 2007 11:28 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
[GunYa]
Цитата:
А оно готово уже?

Почти.
Все функции уже пашут(специально проверял) в режиме байтовых паттэрнов. Полубайтовые думаю должны пахать на ура но хочу удостовериться перед релизом исходника и статических/динамических библиотек в паблик.

_________________
В чём сила брат?
Сила, брат, в VUP-е !!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 11, 2007 7:12 am 
Не в сети
Местный ГУРУ
Местный ГУРУ
Аватара пользователя

Зарегистрирован: Вс фев 06, 2005 1:31 pm
Сообщений: 2463
Откуда: с луны, со своей луны, свалился :(
Цитата:
Загрузка файла в память происходит сразу и целиком(Поэтому вам понадобится памяти минимум в размер загружаемого файла - Попробуйте грузануть 3 ГБ )

жестока..
правда я у ся на компе врядли когда либо буду делать патчик на файлик более 10 метров :D

_________________
Изображение
Читай ПРАВИЛА. Я не оДын


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 11, 2007 6:46 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
И так обновления среды:

Dev C++ -> wxDev C++ -> Code::Blocks 4.11.07 Nightly Build
MingW GCC 4.2.1 DW2 -> TDM/MingW GCC 4.2.2-SJLJ

Со стриппингом символов размер либы сократился с 18-и кило до 10-и кило :)

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

Так как я пишу на C ,любителям объектов и прочей байды(обработка исключений,шаблоны и тд и тп - вообщем всё что не люблю я :D) понадобится импортировать функции с использованием extern "C"...

[Обновление]
Вообщем всё уже почти готово. Поправил множество ошибок и недоработок.Добавил недостающие проверки на ошибки в некоторых местах и закончил пользовательские функции первого уровня(всё ещё относительно низкий уровень). Щас допишу пользовательскую функцию(единственную) 2-го уровня и займусь созданием документации.

Лицензия GPLv3 пока в раздумье так как разработчику UPK понадобится использовать эту библиотеку а GPL потребует открытия исходного кога его проекта(от чего я думаю он не будет в восторге хотя кто знает...). Альтернативой является отностительно restrictionless лицензия BSD хотя я не в восторе от разрешения использования своего труда в проприетарных проектах...

[Обновление2]
Бу :D

Релизнул. Наверное наваял как всегда кучу глюков(:D :D) но хочеться верить что всё будет чики-пики.На выходных натестируюсь :)

Первичный тест показал что использование пользовательской функции 2-го уровня пока что приводит к бесконечному циклу в программе... Отладка показала что проблема в парсэре паттэрнов... Завтра гляну что за фигня... :(

[Обновление3]
Поправил все недочёты. Осталось исправить проблему с тем что даже если паттэрн найден(и заменён) пользовательская функция возвращает значение FALSE в массиве лога обработки...
Когда исправлю эту проблему выложу бэту 13...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 21, 2007 5:03 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
Наконец то нашёл время и поправил все задерживающие релиз проблемы :D

Выпустил финальную версию библиотеки v1.0
Уряяя.

Скоро можно будет начать работу над новым юни пачем ко всем играм... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 21, 2007 6:33 pm 
Не в сети
Интригант и Словоблуд
Интригант и Словоблуд
Аватара пользователя

Зарегистрирован: Ср дек 07, 2005 9:44 pm
Сообщений: 4176
Откуда: From Hell
даа, ктобы мне еще картинку дал, адекватную чтоб новость запостить...

vityan666, к сожелению там где я сейчас нахожусь, очень жесткий инет, перезалей файл еще куданибудь %)

_________________
Изображение
Изображение
Медик - это боевой клич!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 22, 2007 12:27 am 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
[All]
Релизнул 1.01

Усовершенствования:
Дэфы для компоновки под windows(_WIN32_/__WIN32__) даже с помощью MSVC(_MSVC_/__MSVC__).
Под линухами и юних-лайками дэфы не требуются.

Добавлена моя 64-ёх разрядная либа под линух(в папке bin\linux) libOpenPtch.so(Проверил пачинг с ней же)

И...
[impulse666]
Залил 1.01 на sendfile ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 22, 2007 2:00 pm 
Не в сети
Source Developing
Source Developing
Аватара пользователя

Зарегистрирован: Пн авг 14, 2006 8:33 am
Сообщений: 607
Откуда: Светлогорск, Беларусь
Коммандная строка поддерживается? Хотелось бы засунуть в УПК :)

добавлено спустя 1 час 11 минут:

vityan666
А можно ли делать что-то тип обновлений для файлов? Если можно, то как?

_________________
Half-Life FOREVER! Speccy -наш выбор!
Форум пользователей DownloadMaster'a Ukrainian Counter-Strike Mapping Community


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 22, 2007 3:19 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
[andreil]
Цитата:
А можно ли делать что-то тип обновлений для файлов? Если можно, то как?

Это будет поддерживаться в будущих версиях ;)

Пока что можно создавать пачи модифицирующие файл не меняя его размера(Плюс поиск и т.д и т.п)

Насчёт засунуть в UPK - это не библиотека пача под Valve как ты возможно ошибочно подумал. Это библиотека для создания профессионалных кросс-платформеных пачей общего назначения(по паттэрнам) - То есть если ты знаешь что надо менять и чем заменять то у тебя есть отличный инэтерфэйс для этого и в добавок ещё с открытым исходным кодом...

Насчёт самого UPK - UPK это твой проприетарный проект(исходники закрыты и они только у тебя) а я лицензирую под GPLv3 - То есть использование в рамках проектов с закрытым исходным кодом является нарушением лицензии GPL(и v2 и v3)... ХОтя думаю что с этой проблемой разберёмся ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 2:02 pm 
Не в сети
CSMANiA ENGiNEER
CSMANiA ENGiNEER
Аватара пользователя

Зарегистрирован: Сб апр 14, 2007 2:47 am
Сообщений: 262
И так начинаю разработку расширений для OpenPtch:

Пока что плаг N1:
Обнаружения формата двоичного файла(MZ/NE/PE Executable - Executable/Library,ELF Executable - Executable/Shared Library/Dynamic Library) :D :D

Расширение API первого уровня для поиска
Расширение базового API для считывания данных с потока.

_________________
В чём сила брат?
Сила, брат, в VUP-е !!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 24, 2007 7:28 am 
Не в сети
Source Developing
Source Developing
Аватара пользователя

Зарегистрирован: Пн авг 14, 2006 8:33 am
Сообщений: 607
Откуда: Светлогорск, Беларусь
vityan666
Я имел в виду патчер для Дедик.Серв., а то приходится таскать с УПК пропатченную библиотеку размером 3,5Мб, а так - только патчик.

_________________
Half-Life FOREVER! Speccy -наш выбор!
Форум пользователей DownloadMaster'a Ukrainian Counter-Strike Mapping Community


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 24, 2007 4:21 pm 
Не в сети
Сержант
Сержант
Аватара пользователя

Зарегистрирован: Пт фев 02, 2007 1:36 pm
Сообщений: 95
Откуда: Я сделан в СССР !!! ))))
Могу сказать одно: двиг OpenPtch очень класная штука :) , но у меня проблема в том , что неначем испробовать (VisualStudio2003 после переустановки винды ещё не ставил...) :(

_________________
Изображение
HL2 , LOST , ENIGMA , Garry's mod , Trackmania , Counter-strike FAN!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 24, 2007 4:30 pm 
Не в сети
Source Developing
Source Developing
Аватара пользователя

Зарегистрирован: Пн авг 14, 2006 8:33 am
Сообщений: 607
Откуда: Светлогорск, Беларусь
vityan666
Насчет моей просьбы - я имел в виду функцию вида : "Pathing(patchFile, Patch: string)" - это на Дельфи, на Си немного по другому, но принцип одинаков.

_________________
Half-Life FOREVER! Speccy -наш выбор!
Форум пользователей DownloadMaster'a Ukrainian Counter-Strike Mapping Community


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 24, 2007 6:48 pm 
Не в сети
Интригант и Словоблуд
Интригант и Словоблуд
Аватара пользователя

Зарегистрирован: Ср дек 07, 2005 9:44 pm
Сообщений: 4176
Откуда: From Hell
AGNESTEAM
а VS тебе непоможет, GCC компилятор вроде нужн %)

_________________
Изображение
Изображение
Медик - это боевой клич!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 43 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC


Кто сейчас на конференции

Сейчас этот форум просматривают: Alexa [Bot] и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Powered by phpBB © 2000-2007 phpBB Group