Контрольная сумма между 2 файлами - PullRequest
0 голосов
/ 09 января 2019

У меня есть 2 файла, давайте назовем их «a.exe» и «b.exe», я хочу, чтобы «a.exe» содержал контрольную сумму «b.exe» и сравнивал ее, чтобы она знала, "b.exe" был отредактирован, и наоборот.

Что я уже пробовал: Моя проблема заключается в том, что когда я включаю контрольную сумму в «a.exe», она меняет контрольную сумму, то же самое, если я включаю контрольную сумму «a.exe» в «b.exe».

Есть ли обходной путь к этому?

По сути, я хочу, чтобы оба файла проверяли друг друга, поэтому, если один из них был изменен, другой узнает.

1 Ответ

0 голосов
/ 09 января 2019

Следующие могут работать, хотя это своего рода взломать, и это не особенно безопасно. Но в зависимости от вашего варианта использования, это может быть достаточно хорошо.

Сначала скомпилируйте a.exe и b.exe. Затем вычислите контрольную сумму a.exe и добавьте ее в конец b.exe. И вычислите контрольную сумму для b.exe и добавьте ее в конец a.exe.

Теперь, чтобы a.exe проверил контрольную сумму b.exe, выполните в a.exe следующее:

  1. Открыть b.exe в виде двоичного файла.
  2. Считать содержимое памяти b.exe, за исключением последних нескольких байтов, содержащих контрольную сумму a.exe, в память.
  3. Вычислить контрольную сумму этого блока памяти.
  4. Считать контрольную сумму для b.exe с конца a.exe.
  5. Сравните вычисленную контрольную сумму со значением, полученным в конце a.exe.

Это небезопасно, потому что кто-то может изменить файлы и изменить контрольные суммы.

Чтобы добавить контрольную сумму в исполняемый файл в Windows:

copy /b a.exe + checksum.txt newa.exe

Я не знаю, как это сделать в других операционных системах.

...