Як порахувати контрольну суму моєї програми?
Тобто проект запускається, і сам себе вважає. Я думав, може просто побайтно зчитувати екзешник, а потім кожен символ переводити в цифровий еквівалент і їх підсумовувати? Може є більш оригінальні думки? В принципі треба перевіряти тільки частина коду. Заздалегідь дякую.
Кожен може вважати контрольну суму чимось своїм. Як Ви думаєте, робиться в більшості випадків.
0. визначається маркери, що обмежують потрібну ділянку коду.
1. У готовому .exe шукаєш цей код.
2. Чи вважаєш знайдений код методом crc32.
3. Результат заносиш в константу всередині програми.
4. Пишеш код, який, по-перше, вважає контрольну суму коду, знайденого в пунктах 0-1, (тобто частини твого .exe), а по-друге, порівнює отриманий результат з константою, створеної в пункті 3.
5. Заново компіліруешь код програми.
----------------------------------------------------
При виконанні пункту 5 можливо (але не обов'язково), компілятор змінить код, обмежений маркерами пункту 0. Тому, треба або спеціально налаштовувати компілятор або внести критичний до змін код в окрему зовнішню бібліотеку (dll).
> Kettle of delphi А як в готовому файлів знайти код скачемо відповідає за натискання на Button1. І потім якщо я в програму жорстко напишу контрольну суму, її ж там, якщо я правильно зрозумів при певному навику, змінити - як два байти переслат. Як тут бути?
Скопіюй файл куди завгодно і відкривай з того місця.
Це необхідно проводити не з копією, а з активною програмою в прцессе її роботи
Я тоді взагалі не бачу сенсу в перевірці контрольної симми програми якщо з самої програми цю суму перевірити не можна. А як же дізнатися що в твоїй проге хтось поколупався?
Відкрити себе на читання можеш?
Навчи програму підрахувати CRC32 без останніх 4 байт і порівнюй з тим що лежить в останніх 4 байтах (еталонний правильний CRC32). Після компіляції підрахуй CRC32 свого exe-якою іншою програмою і приліпи отримане до exe.
Можеш засунути еталонний CRC32 і в середину (у вигляді константи, ресурсу), тоді програма повинна вміти обходити це місце.
Спасибі за допомогу.