как удалить некоторые данные из файла pe (exe) в C - PullRequest
1 голос
/ 11 октября 2010

в первом exe-файле я определил массив char с некоторыми специальными байтами в качестве метки, я отобразил его в память другого exe-файла, нашел нужную метку и добавил в нее новые данные, но эти данные могли быть короче, чем определенный массив, поэтому хочу вырезать этот массив до нужного размера! как я могу это сделать?

1 Ответ

4 голосов
/ 11 октября 2010

Нет прекрасного и простого способа вырезать кусочки PE-файла.

Очевидное решение состоит в том, чтобы дополнительно определить поле length в оригинальном (в ваших терминах first ) exe и пометить его другой меткой. Тогда дополнительной работой второго exe-файла будет запись в это поле фактической длины данных.


РЕДАКТИРОВАТЬ: Если резка является вашей основной целью, вы также должны иметь в виду, что:

  • Контрольная сумма ЧП изменится. Расположение поля контрольной суммы в PE-заголовке найти несложно.
  • PE-файл выровнен. Все разделы выровнены. Выравнивание также можно найти в заголовке.
  • Если вы порежете одну секцию, это приведет к большим последствиям. Взгляните на структуру заголовка PE-файла.

header

Ссылка: http://msdn.microsoft.com/en-us/library/ms809762.aspx

...