Страница 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
Игорь Столяров
Ну это классика. :)
Слабое место в любой навороченной системе защиты - это пистолет к голове человека, который знает пароль. :idied:

Безусловно речь не идет о том, что проверка целостности файла даст какую-либо защиту от нелегального копирования.
Мы можем самостоятельно изобретать расчет и проверку хеша файла, или можем воспользоваться подписью сертификатом.
Далее уже вопрос использования этой информации - если она явно проверятся в одном месте, то просто отключается и все
(при наличии соответствующих навыков и знаний). Если она будет проверяться в 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)