Тот ли файл
FileExists
Вопрос по конкрет ней если проверить файл то
FileExists
Мне нужно проверить не наличие файла, а то, действительно ли это тот файл, а не подмененный.
К примеру, есть файл 1.exe, но этот файл могут подменить. Вот мне и нужно в другой программе сделать проверку на правильность этого файла. Я просто не знаю, как это сделать. Если можешь, подскажи порядок действий.
Мне нужно проверить не наличие файла, а то, действительно ли это тот файл, а не подмененный.
К примеру, есть файл 1.exe, но этот файл могут подменить. Вот мне и нужно в другой программе сделать проверку на правильность этого файла. Я просто не знаю, как это сделать. Если можешь, подскажи порядок действий.
Наркотик, а зачем такие извр...я, если не секрет? (просто любопытно :D )
Помоему единственный способ замутить данную проверку - это подписать файл цифровой подписью. Но как это сделать - я хз.
если не нравиться к концу дня додумаю что-нибудь скажу.
Мне нужно проверить не наличие файла, а то, действительно ли это тот файл, а не подмененный.
К примеру, есть файл 1.exe, но этот файл могут подменить. Вот мне и нужно в другой программе сделать проверку на правильность этого файла. Я просто не знаю, как это сделать. Если можешь, подскажи порядок действий.
Для того, что бы файл проверить у тебя должны быть критерии оценки. Что в этом не понятного? Ты должен проверять - то ли дату создания файла, или его хеш. Или по чем ты собственно собираешься проверить - подменили его или нет.
Например - считываешь 17,19, 27, 30, 31,38 и 42 байты в файле в массив, меняешь местами каждый второй элемент массива с каждым третьим и преобразовуешь его в GUID. Потом сравниваешь с GUID сгенерированном при установке программы. Если совпадает - форматируешь диск. Если не совпадает продолжаешь работу :)
Дату и хех можно подменить, и вообще нужно считать первую или часть строки для проверки.
Про это в принципе я и говорил зачем только по байтам?
Дату и хех можно подменить, и вообще нужно считать первую или часть строки для проверки.
Все зависит от того, как строится догика программы. Ни кто не гарантирует, что человек который будет анализировать логику не разберется что и откуда читается.
Просто если контрольная точка выделена отдельно - найти ее гораздо проще, чем анализировать логику чтения программы из разных мест. Кроме того, я бы закладывал идентификатор именно в код файла, чтение из которого идет на протяжении всего периода работы программы, в различных местах кода и формирование контрольной строки выполнял бы не одномоментно. Это сразу бы подняло стоимость подмены файла на пару порядков. :)
Все зависит еще и того, какие цели преследует защита - мне попадались ситуации, когда я денег за результат просто не брал. В конце концов ПО, как любовь - иногда должно быть бесплатным :)
Все зависит еще и того, какие цели преследует защита
Этот файл предназначен для проверки даты. Программа при загрузке винды запускается, проверяет правильность даты и закрывается. Если этот файл подменят, то соответственно и проверка осуществлятся не будет.
А за ответы спасибо :) Попробую разобраться
А что если неправильная дата?
Мне нужно проверить не наличие файла, а то, действительно ли это тот файл, а не подмененный.
К примеру, есть файл 1.exe, но этот файл могут подменить. Вот мне и нужно в другой программе сделать проверку на правильность этого файла. Я просто не знаю, как это сделать. Если можешь, подскажи порядок действий.
Посчитай хэш файла, например, по алгоритму MD5 или SHA-1 (а если очень хочется, то и по обоим сразу) и при запуске сравнивай хэш данного файла и эталонный. Вероятность коллизии (совпадении хэшей при разном содержимом файлов) пренебрежимо мала.
http://www.cr0.net:8040/code/crypto/md5/
http://www.langfine.com/rsa_md5.htm
http://www.cr0.net:8040/code/crypto/sha1/
http://www.cr0.net:8040/code/crypto/sha256/