Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Вниз

Контрольная сумма, как её создать и как проверить?   Найти похожие ветки 

 
Filat   (2002-06-17 19:05) [0]

Привет ALL! Когда слышал о контрольных суммах. Приблизительно (совсем так, ближе к ламеру:))) ) знаю чего она делает.
Так вот, пишу программу и хочу сделать проверку на эти контрольные суммы, но не постоянно, а через определённый интервал, скажем 5-10 дней. Если где-то код подправили и в зависимости от того какой и насколько потом уже что то прога будет делать, или не будет вообще ничего. Вот как это дело можно организовать?
Догадываюсь что нужен ассемблер, но я в нем не петрю.
Подскажите пожалуйста.


 
Filat   (2002-06-17 21:03) [1]

Неужели никто не знает? :((


 
Anatoly Podgoretsky   (2002-06-17 21:11) [2]

Складываешь сумму байт в переменную и сравниваешь с константой
Но если поправили и как я понял выборочно, то поправят и твою проверку, если кому нибудь твоя программа вообще нужна
Ассемблер для сумирования это круто


 
McSimm   (2002-06-18 09:45) [3]

Очень качественная контрольная сумма (лично проверял на больших объемах) расчитывается след. функцией
const
CRC32_Table: array[0..255] of LongWord =
($00000000,$77073096,$EE0E612C,$990951BA,$076DC419,$706AF48F,$E963A535,$9E6495A3,
$0EDB8832,$79DCB8A4,$E0D5E91E,$97D2D988,$09B64C2B,$7EB17CBD,$E7B82D07,$90BF1D91,
$1DB71064,$6AB020F2,$F3B97148,$84BE41DE,$1ADAD47D,$6DDDE4EB,$F4D4B551,$83D385C7,
$136C9856,$646BA8C0,$FD62F97A,$8A65C9EC,$14015C4F,$63066CD9,$FA0F3D63,$8D080DF5,
$3B6E20C8,$4C69105E,$D56041E4,$A2677172,$3C03E4D1,$4B04D447,$D20D85FD,$A50AB56B,
$35B5A8FA,$42B2986C,$DBBBC9D6,$ACBCF940,$32D86CE3,$45DF5C75,$DCD60DCF,$ABD13D59,
$26D930AC,$51DE003A,$C8D75180,$BFD06116,$21B4F4B5,$56B3C423,$CFBA9599,$B8BDA50F,
$2802B89E,$5F058808,$C60CD9B2,$B10BE924,$2F6F7C87,$58684C11,$C1611DAB,$B6662D3D,
$76DC4190,$01DB7106,$98D220BC,$EFD5102A,$71B18589,$06B6B51F,$9FBFE4A5,$E8B8D433,
$7807C9A2,$0F00F934,$9609A88E,$E10E9818,$7F6A0DBB,$086D3D2D,$91646C97,$E6635C01,
$6B6B51F4,$1C6C6162,$856530D8,$F262004E,$6C0695ED,$1B01A57B,$8208F4C1,$F50FC457,
$65B0D9C6,$12B7E950,$8BBEB8EA,$FCB9887C,$62DD1DDF,$15DA2D49,$8CD37CF3,$FBD44C65,
$4DB26158,$3AB551CE,$A3BC0074,$D4BB30E2,$4ADFA541,$3DD895D7,$A4D1C46D,$D3D6F4FB,
$4369E96A,$346ED9FC,$AD678846,$DA60B8D0,$44042D73,$33031DE5,$AA0A4C5F,$DD0D7CC9,
$5005713C,$270241AA,$BE0B1010,$C90C2086,$5768B525,$206F85B3,$B966D409,$CE61E49F,
$5EDEF90E,$29D9C998,$B0D09822,$C7D7A8B4,$59B33D17,$2EB40D81,$B7BD5C3B,$C0BA6CAD,
$EDB88320,$9ABFB3B6,$03B6E20C,$74B1D29A,$EAD54739,$9DD277AF,$04DB2615,$73DC1683,
$E3630B12,$94643B84,$0D6D6A3E,$7A6A5AA8,$E40ECF0B,$9309FF9D,$0A00AE27,$7D079EB1,
$F00F9344,$8708A3D2,$1E01F268,$6906C2FE,$F762575D,$806567CB,$196C3671,$6E6B06E7,
$FED41B76,$89D32BE0,$10DA7A5A,$67DD4ACC,$F9B9DF6F,$8EBEEFF9,$17B7BE43,$60B08ED5,
$D6D6A3E8,$A1D1937E,$38D8C2C4,$4FDFF252,$D1BB67F1,$A6BC5767,$3FB506DD,$48B2364B,
$D80D2BDA,$AF0A1B4C,$36034AF6,$41047A60,$DF60EFC3,$A867DF55,$316E8EEF,$4669BE79,
$CB61B38C,$BC66831A,$256FD2A0,$5268E236,$CC0C7795,$BB0B4703,$220216B9,$5505262F,
$C5BA3BBE,$B2BD0B28,$2BB45A92,$5CB36A04,$C2D7FFA7,$B5D0CF31,$2CD99E8B,$5BDEAE1D,
$9B64C2B0,$EC63F226,$756AA39C,$026D930A,$9C0906A9,$EB0E363F,$72076785,$05005713,
$95BF4A82,$E2B87A14,$7BB12BAE,$0CB61B38,$92D28E9B,$E5D5BE0D,$7CDCEFB7,$0BDBDF21,
$86D3D2D4,$F1D4E242,$68DDB3F8,$1FDA836E,$81BE16CD,$F6B9265B,$6FB077E1,$18B74777,
$88085AE6,$FF0F6A70,$66063BCA,$11010B5C,$8F659EFF,$F862AE69,$616BFFD3,$166CCF45,
$A00AE278,$D70DD2EE,$4E048354,$3903B3C2,$A7672661,$D06016F7,$4969474D,$3E6E77DB,
$AED16A4A,$D9D65ADC,$40DF0B66,$37D83BF0,$A9BCAE53,$DEBB9EC5,$47B2CF7F,$30B5FFE9,
$BDBDF21C,$CABAC28A,$53B39330,$24B4A3A6,$BAD03605,$CDD70693,$54DE5729,$23D967BF,
$B3667A2E,$C4614AB8,$5D681B02,$2A6F2B94,$B40BBE37,$C30C8EA1,$5A05DF1B,$2D02EF8D);

function Q_CRC32(P: Pointer; L: Cardinal): LongWord;
asm
PUSH EBX
MOV EBX,EAX
MOV EAX,$FFFFFFFF
PUSH ESI
TEST EDX,EDX
JE @@qt
@@lp: MOVZX ESI,BYTE PTR [EBX]
MOVZX ECX,AL
XOR ECX,ESI
SHR EAX,8
XOR EAX,DWORD PTR [ECX*4+CRC32_Table]
INC EBX
DEC EDX
JNE @@lp
@@qt: POP ESI
NOT EAX
POP EBX
end;


 
McSimm   (2002-06-18 10:02) [4]

P.S. Однако качество контрольной суммы мало влияет на степень защищенности программы :)
(см. >Anatoly Podgoretsky © (17.06.02 21:11))


 
Filat   (2002-06-18 21:21) [5]

А как это дело применить, т.е. на что имеет смысл её ставить или что подсчитывать. Ээээээээ,...., как бы правильно правильно сказать, ну её применяют к функции или к какому-нибудь результату выполнения (полученное значение переменной или значение константы). Так я понимаю?


 
McSimm   (2002-06-19 09:41) [6]

Расчет CRC применяют к любых блокам данных при желании в последствии с определенной степенью достоверности убедиться в их идентичности. Я использую эту функцию для хранения КС слов (в словаре в несколько десятков тысяч - ни одной пары разных слов с одинаковым CRC).

Забыл описать назанчение входных параметров - указатель на область памяти и длина блока. Возвращаемое значение - 32х битный CRC.

Можно расчитать КС на весь файл EXE (для этого его придется целиком грузить в память), можно расчитывать CRC для какой-либо критичной ф-ции в программе непосредственно по уже загруженному коду....
В любом случае это слабая защита, т.к. минимального опыта по rev. eng-g хватит чтобы найти место сравнения КС.


 
Filat   (2002-06-19 12:39) [7]

Я не хочу защиту делать только на этом, я придумал ещё около 10 видов проверок. :))) Хочу это дело использовать с генератором случайных чисел, т.е. проверка совсем критических параметров будет проверяться сразу, менее - чуть позже, возможно генератор будет выдавать типа от 1 до 10 случайно, соответственно проверился параметр, номер которого выпал. + будут ещё проверки, которые будут проверяться по разным критериям случайно, если чего то не так. Ну а там будет видно как наказывать :))))) Можно комп ребутнуть, в другой раз базу завалить, и всё случайно + проверка на наличие инета, а прога будет работать через него, получение на мой ящик данных кто использует её в данный момент. Ну тут уже фантазия не ограничена....., хотя наказывать буду того, кто эту прогу передал третьему лицу.

McSimm - тебе если что, можно будет на мыло писать по этому вопросу, или на ICQ если есть?


 
McSimm   (2002-06-19 12:49) [8]

Нет, по этой теме ко мне нет смысла обращаться лично. Я лишь дал хорошую функцию расчета КС.
Проблемы защиты ПО меня не интересуют.

Кстати, мое мнение по такому способу защиты - такие программы я приравниваю к троянам. Умышленное внедрение в программу деструктивных функций. Не важно сработают они у вора или у клиента


 
Filat   (2002-06-25 13:18) [9]

McSimm Хм, трояны говоришь? Я вот пишу Клиент-Банк, как думаешь, когда кто-то стырил прогу или сменил настройки как надо защищать чужие деньги? Клиент потом просто разорвет!!!!! если бабки стырят, так что тут приходиться макитрой шевелить плотно.
У нас НБУ дрючит сразу, если только подозрение на поддельный почтовый пакет, я уже не говорю о платежах, там сразу блокировка прилетит и пикнуть не успеешь.
Вот под эти условия и подстраиваемся......



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
7-23801
KarlovAF
2002-04-12 05:26
2002.07.08
Delphi5 and WinNT Terminal Server...


3-23518
Сано
2002-06-18 09:38
2002.07.08
Parameters


1-23565
kull
2002-06-26 10:45
2002.07.08
Форма + интерфейс


7-23798
Devid
2002-04-13 17:29
2002.07.08
Уважаемые знатоки! Или подобные!


8-23680
Spirit
2002-03-01 11:03
2002.07.08
Как сделать пазл из картинки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский