Патч

Материал из Russian Underground
Перейти к: навигация, поиск

Патч (англ. patch - "заплатка")

Патч это многогранное понятие:

1. Процесс изменения байт в исполняемых EXE файлах.
2. Программа, реализующая пункт 1.
3. Еще патчат реестр, любые файлы с данными, значения в памяти.

Существует такая разновидность, как инлайн-патч. Лоадер в общем случае тоже является вариацией патча.

Вопросы и ответы

Как пропатчить исполняемый файл программы?

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

Мне нужно изменить работу программы для своих целей. Я хочу вставить на место инструкций, которые хочу изменить, свои инструкции. Но "не хватает места", т.е. мои инструкции занимают больше места, чем те, которые нужно заменить. Что делать?

В этом случае составляем нужный нам код (процедуру). В конце кода добавляем команду ret. Создаем новую секцию (с помощью LordPE или ProcDump) и помещаем наш код в эту секцию. В начале инструкций, которые нам надо изменить, ставим вызов добавленной процедуры (call), оставшиеся ненужные инструкции, до начала нужных, забиваем командами "nop". Все. Только нужно будет быть внимательным с адресами, их надо будет смотреть в отладчике. Еще можно не добавлять новую секцию, а написать свой машинный код (процедуру) в конец последней секции файла (там обычно есть много нулей), и дальше делать так, как я написал выше. Если в конце файла нет нулей, можно их дописать и расширить raw и virtual size последней секции, и не забыть исправить Image Size (увеличить все эти параметры на длину дописанного кода).

Cм. также

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Сцена
Материалы
Разное
Donate
Инструменты