Форум: "Основная";
Текущий архив: 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