0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Snippets: Программный «патч» на C#


Что делать, если нам надо, например, отредактировать уже готовый файл изнутри или что-то туда добавить(так называемый софтверный патч;например какие-то дополнительные параметры для какой-то программы, открывающей этот файл). Рассмотрим этот вопрос на примере EXE файла, то есть запускаемого. Если мы что-то похерим нашим внедрением, то он- просто завалится и все =)

На самом деле все очень просто, если добавить нужно не исполняемую информацию.  Тогда добавлять ее, скорее всего, можно и в конец файла. И, для достижения этого-можно соединить дополнительную информацию и сам файл в памяти и пересохранить все это в новый файл:

// using MemoryStream to append two buffers
MemoryStream ms = new MemoryStream();
ms.Write(b, 0, b.Length);
ms.Position = ms.Length;
ms.Write(bTemp, 0, bTemp.Length);

Где  b-это byte[] из исходного файла, bTemp-byte[] патч. Намного сложнее делать патчи, которые будут «исправлять» побайтово внутренности файла с сохранением работоспособности(можете это и креком назвать)..Да и делается это не в C#(хотя…зачем делать просто, если можно-через жопу © ) =) и это-совершенно другая тема.

На оригинальность не претендую, это-всего лишь сниппет. 
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: