![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание патча
TheGUEST © (2005-08-13 18:00:00)Уважаемые,
нет ли у кого подробного примера создания патча? Меня интересует поиск и замена значений по оффсету.
NightLord (2005-08-15 06:34:00) [1]var f:TFileStream;
s:byte;
begin
//открываем файл для чтения
f:=TFileStream.Create'xxx.exe', fmOpenReadWrite);
//переходим на нужную позицию в файле
f.Seek($0ac0e9, soFromBeginning);
//читаем текущее значене
f.Read(s , sizeof(s));
//Если текущее значение равно $74, то исправляем
if s=$74 then
begin
s:=$eb;
f.seek($0ac0e9, soFormBeginning);
f.Write(s, sizeof(s));
end;
f.free; //закрываем
end;
Eraser (2005-08-14 14:20:00) [2]TheGUEST (14.08.05 12:46) [3]
TFileStream подходит именно для самого "пропатчивания".
А сам патч должен состоять из 2-х частей:
1. Данные.
2. Таблица в которой находится информация куда и как Данные патчить.
TheGUEST (2005-08-14 12:46:00) [3]Ну почему же больше? Мне же не нужно что бы он велючал в себя файл. Все просто, он находит нужные оффсеты и меняет значения.
Программер из меня хреновый, а вот HEX-редактором я пользоваться умею. Часто режу с помощью него баннеры (например дл Download Master), хотл написат патч который будет это делать...
Grief (2005-08-14 11:00:00) [4]Патч - по кусочкам файла - мастдайство - патч будет весить намного больше чем заменяемый файл, если конечно не сделаешь супер-пупер алгоритнм - гораздо проще заменять целиком файлы. Впрочем зачастую так и есть.
Eraser (2005-08-13 21:57:00) [5]TheGUEST (13.08.05 18:00)
Очень хорошо для данной цели подходит TFileStream.