Определяем задание и исходные данные
Для начала делаем наброски исходных данных, требования к исходным данным и способы решения поставленной задачи. (Говоря о контрольных суммах я буду подразумевать, что мы используем CRC-32)
Возьмем такое условие, что интерес представляет контроль CRC всего файла запускаемой программы. Для реального приложения нашу задачу логично разбить на две части. Незачем в защищенном файле хранить процедуры коррекции контрольных сумм :).
- Первая - защищенная программа, которая будет проверять свою контрольную сумму и содержать в себе константу со значением этого CRC.
- Вторая - программа которая будет прописывать контрольную сумму в скомпилированный код готового исполняемого файла первой программы и выполнять необходимую коррекцию, чтобы эта контрольная сумма соответствовала действительности.
Из данных мы имеем:
- Контрольную сумму исполняемого файла защищенной программы - это та CRC, которую будет иметь файл после всех операций над ним.
- Смещение в исходном файле ячейки, хранящей контрольную сумму. По этому смещению вторая программа запишет туда CRC.
Что нужно сделать?
Прописать контрольную сумму в определенное место защищенного файла так, чтобы она соответствовала тому, что получит сама защищенная программа при проверке самой себя. Звучит закручено.
Содержание Назад Вперед