Страница 3 из 3
					
				Как рассчитать контрольную сумму .exe файла программы
				Добавлено: 29 Апрель 2015, 8:30
				 Admin
				AlesDales писал(а): Кстати ссылка битая.
 
Не любит народ пользоваться тегами. Хитрые ссылки криво определяются phpbb3.
 
			 
			
					
				Как рассчитать контрольную сумму .exe файла программы
				Добавлено: 29 Апрель 2015, 8:34
				 Игорь Столяров
				AlesDales писал(а):  Или ты думаешь, что человек скачавший взломанную программу будет заглядывать в ее сертификат и с ужасом обнаружит, что “подпись слетела”?
 
Нет ! Это всего лишь говорит о том, информация о внесении изменений в код программы есть.
Средства Windows - дают об этом информацию. Они достаточны для запрета запуска таких программ на "своих" компьютерах через права пользователя. Далее, если мы хотим использовать информацию о модификации кода для защиты программы от пиратского копирования, то должны анализировать ее в коде программы и уже принимать какие-то решения (запрещать запуск и т.д.). Разве я не прав ?
Вот ссылка в виде текста.
Код: Выделить всё
https://technet.microsoft.com/ru-ru/library/dd835564(v=ws.10).aspx
 
			 
			
					
				Как рассчитать контрольную сумму .exe файла программы
				Добавлено: 29 Апрель 2015, 9:29
				 AlesDales
				Игорь Столяров писал(а): Нет ! Это всего лишь говорит о том, информация о внесении изменений в код программы есть.
 
Так для этого достаточно проверять его контрольную сумму, с чего и началась эта дискуссия.
Один будет проверять контрольную сумму файла, другой считывать серийный номер процессора, ты будешь проверять достоверность сертификата во всех этих случаях достаточно отключить процедуру проверки. 
Clarion начиная с 7 версии защищен платной системой защиты с ключами и жуткой криптоматематикой в суть которой я даже не стал вникать (что то из области векторных вычислений) – отключается изменением 3 байт.
 
			 
			
					
				Как рассчитать контрольную сумму .exe файла программы
				Добавлено: 29 Апрель 2015, 9:42
				 Игорь Столяров
				Ну это классика. 
 
Слабое место в любой навороченной системе защиты - это пистолет к голове человека, который знает пароль.  
 
Безусловно речь не идет о том, что проверка целостности файла даст какую-либо защиту от нелегального копирования.
Мы можем самостоятельно изобретать расчет и проверку хеша файла, или можем воспользоваться подписью сертификатом.
Далее уже вопрос использования этой информации - если она явно проверятся в одном месте, то просто отключается и все
(при наличии соответствующих навыков и знаний). Если она будет проверяться в 20 местах программы и не приводить к 
явным сообщения и отказу в запуске - отключение такой примитивной защиты долгий процесс, и как ты правильно заметил,
имеет смысл только для дорогих и востребованных приложений.
 
			 
			
					
				Как рассчитать контрольную сумму .exe файла программы
				Добавлено: 17 Май 2023, 19:51
				 Игорь Столяров
				Оставлю здесь, вдруг пригодится. 
Вот такой гибрид варианта Юрия и описания на ClarionHub выполняет расчёт 
CRC32 полностью совместимый со стороними программами и сервисами:
Код: Выделить всё
    Module('ClarionRTL')
      TSC::CRC32(UNSIGNED pBuffer, ULong cbBuffer, ULong InitalCRC=0),ULong,Name('CLA$CRC32')
    end
! --- Расчёт CRC32 by Internal Clarion
TSC::IntCRC32        Procedure(String pStr)  !,ULONG
uCRC   ULong(0FFFFFFFFh)
  Code
  uCRC = TSC::CRC32(Address(pStr), Size(pStr), uCRC)
  Return BXOR(uCRC,0FFFFFFFFh)
Ну или напрямую (медленней, цикл в цикле):
Код: Выделить всё
! --- Расчёт CRC32 by Geoff Robinson -> https://clarionhub.com/t/crc32-document/4485/8
TSC::RobCRC32        Procedure(String pStr)  !,ULONG
lCount Long,Auto
uCRC   ULong(0FFFFFFFFh)
  Code
  Loop lCount = 1 to Size(pStr)
    uCRC = BXOR(uCRC,Val(pStr[lCount]))
    Loop 8 Times
      uCRC = BXOR(BSHIFT(uCRC, -1), BAND(0EDB88320h, -(BAND(uCRC,1))))
    end
  end
  Return BXOR(uCRC,0FFFFFFFFh)