Цитата(Xenia @ Feb 11 2011, 19:59)

Если известно место, где находится образец контрольной суммы, то можно находить частные контрольные суммы ДО и ПОСЛЕ этого образца, т.е. за исключением самого эталона КС, хранящегося в файле.
Приведу пример, чтобы стало яснее. Например, создать в области констант строку типа "Эталон_контрольной суммы = 0x123456789", вколотив в него сначала произвольные цифры. Затем открываете файл и ищете начало надписи "Эталон_контрольной суммы = " и вычисляете знакоместо после конца этой записи (там, где цифра должна начаться). Пусть это значение будет P1-й байт от начала файла. А после этого вычисляем знакоместо после цифры 0x123456789. Пусть это будет P2=P1+11. А дальше просто - вычисляете констрольные суммы файла от 0 до P1, и от P2 до конца файла, а потом их складываете. Это число и надо будет запихнуть в программу при следующей компиляции, заменив им число 0x123456789. Понятно, что на это место можно запихать любое число, не рискуя тем, что ваша контрольная сумма от этого изменится.
Если требуется обеспечить секретность, то число можно положить в бинарном виде, а ярлычок к ней "Эталон_контрольной суммы =" тоже заменить как какую-нибудь уникальную бинарную цифирь.
спасибо, я тоже в таком направлении начал думать, немного смущали два хеша
посмотрел еще в сторону сторонних скрывателей кода, типа Themida, WinLicense и иже с ними
тут можно проверкой не заморачиваться -- они сами это все встроят и, мало того, зашифруют код и запустят под своей виртуалкой. Какое мнение по поводу такого софта вообще?
Смущает такая вещь, не хочется, чтобы клиенты потом в саппорт оборвали телефон и завалили почтовый ящик кучей гневных писем

У меня стоит Nod32, так он, по ходу, не может добраться до развернутого в памяти процесса и особо не заморачивается -- тупо говорит, что файл содержит win32/packed.themida.AAG трояна и швыряет файл в карантин