| Посл.ответ | 
Сообщение | 
  Ранг: 138.1 (ветеран) Активность: 0.09↘0 Статус: Участник Одепт ЭкзэЛаба 
 
 | 
Создано: 10 мая 2006 23:36   · Личное сообщение ·  #1 
Вопрос мой таков,как проверить CRC отдельного участка кода?Допустим есть такой код:
 
 -/-/-/-/
 popad
 jmp oep
 -/-/-/-/-
 
Как проверить его на целостность?
   | Сообщение посчитали полезным:  | 
 | 
 Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник 
 
 | 
Создано: 10 мая 2006 23:39   · Личное сообщение ·  #2 
g-l-u-k
Простейший метод - посчитай сумму всех байтов. Хочешь надёжнее, подвигай эти байты туда-сюда перед сложением.
   | Сообщение посчитали полезным:   | 
 Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник 
 
 | 
Создано: 10 мая 2006 23:39   · Личное сообщение ·  #3 
Протектор пишешь?   
  | Сообщение посчитали полезным:  | 
  Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник 
 
 | 
Создано: 10 мая 2006 23:42   · Личное сообщение ·  #4 
Проерить код на целостность можно дохрена какими способами, тем же упомянутым CRC32, MD5, наконец самопальным алго.
   | Сообщение посчитали полезным:  | 
 Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 00:15   · Личное сообщение ·  #5 
rmn пишет:
 Протектор пишешь? 
имхо, если аффтар пишет прот и задает такой вопрос - здесь явно что-то не то...   
----- MicroSoft? Is it some kind of a toilet paper?  | Сообщение посчитали полезным:   | 
  Ранг: 1131.7 (!!!!), 447thx Активность: 0.67↘0.2 Статус: Участник 
 
 | 
Создано: 11 мая 2006 02:12   · Личное сообщение ·  #6 
Tim пишет:
 имхо, если аффтар пишет прот и задает такой вопрос - здесь явно что-то не то... 
Да ладно - от Солода, в своё время, такие вопросы в фидо приходили...   
  | Сообщение посчитали полезным:   | 
 Ранг: 133.0 (ветеран) Активность: 0.06↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 06:18   · Личное сообщение ·  #7 
Есть у  nice крекми на эту тему....    
А CRC проверить... возьми готовые алгоритмы, это будет самое простое. Есть кажется в книгах Пирогова примеры. Да и в гугле полно примеров реализации.
   | Сообщение посчитали полезным:  | 
  Ранг: 264.0 (наставник), 5thx Активность: 0.21↘0 Статус: Участник Vanilla Sky 
 
 | 
Создано: 11 мая 2006 09:40   · Личное сообщение ·  #8 
кхе-кхе, я, конечно, дико извиняюсь, но быть может найдёшь что-то стоящее в туторе про СРС в 10-м паке T-53 Tutorials, соответствующая тема есть на форуме.
   | Сообщение посчитали полезным:  | 
 Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net 
 
 | 
Создано: 11 мая 2006 11:20 · Поправил: NG   · Личное сообщение ·  #9 
g-l-u-k пишет:
 Вопрос мой таков,как проверить CRC отдельного участка кода?
вот так:  
 if(CRC32(lpData, nSize) == originalCRC32) {
     cout << "ok" << endl;
 } else {
     cout << "preved!!!" << endl;
 }
  | Сообщение посчитали полезным:   | 
 Ранг: 44.7 (посетитель) Активность: 0.04↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 11:30   · Личное сообщение ·  #10 
NG пишет:
 вот так: 
 if(CRC32(lpData, nSize) == originalCRC32) { 
 cout << "ok" << endl; 
 } else { 
 cout << "preved!!!" << endl; 
 } 
тут вместо CRC32 можешь вставить свою функцию некализионного хеширования (типа биективного отображения последовательности байтов в число)
   | Сообщение посчитали полезным:   | 
 Ранг: 43.0 (посетитель) Активность: 0.03↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 12:03   · Личное сообщение ·  #11 
Keo пишет:
 типа биективного отображения 
а что это означает?   
  | Сообщение посчитали полезным:   | 
 Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net 
 
 | 
Создано: 11 мая 2006 13:04   · Личное сообщение ·  #12 
nikitosk пишет:
 а что это означает? 
это означает, что функция одновременно инъективна и сюръективна.
 только не могу понять, как отображение последовательности байтов в число может быть биективным? может последовательность байтов в другую последовательность байтов?   
зачем?
   | Сообщение посчитали полезным:   | 
 Ранг: 186.8 (ветеран) Активность: 0.04↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 16:43 · Поправил: MoonShiner   · Личное сообщение ·  #13 
NG, не умничай   Отображение последовательности байтов в число влегкую может быть биекцией типа xy ab cd... -> 01 xy ab cd... (например, FF 15 -> 01 FF 15) Тока вот нахера - это я не понял=) ЦРЦ, как справедливо считает ЫНГЕ, в идеале должна являться сюрьекцией. Ну и с коллизиями замут. Ваще - учить матчасть по методам подсчета контрольных сумм  
  | Сообщение посчитали полезным:   | 
 Ранг: 42.4 (посетитель) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 11 мая 2006 17:18   · Личное сообщение ·  #14 
Мне объясняли, что CRC считается любой хеш-функцией. А если уж совсем не заморачиваться - то просто XOR всех байтов.
   | Сообщение посчитали полезным:  | 
  Ранг: 138.1 (ветеран) Активность: 0.09↘0 Статус: Участник Одепт ЭкзэЛаба 
 
 | 
Создано: 11 мая 2006 19:49   · Личное сообщение ·  #15 
Спасибо,буду разбираться
   | Сообщение посчитали полезным:  | 
 Ранг: 145.8 (ветеран) Активность: 0.07↘0 Статус: Участник www.int3.net 
 
 | 
Создано: 11 мая 2006 20:15   · Личное сообщение ·  #16 
killsniper пишет:
 Мне объясняли, что CRC считается любой хеш-функцией. 
любая  циклическая =)
 советую классику почитать, да.
   | Сообщение посчитали полезным:   | 
  Ранг: 138.1 (ветеран) Активность: 0.09↘0 Статус: Участник Одепт ЭкзэЛаба 
 
 | 
Создано: 11 мая 2006 22:33   · Личное сообщение ·  #17 
Поиск по форуму рулит,нашёл то что нужно:
 CRC32 proc lenWORD, dataWORD
 push esi
 push ecx
 push edx
 mov esi, data
 mov ecx, len
 xor edx, edx
 xor eax,eax
 dec eax
 CRC32calc:
 mov dl, byte ptr [esi]
 xor dl, al
 shr eax, 8
 xor eax, dword ptr [hashtab + 4*edx]
 inc esi
 dec ecx
 jnz CRC32calc
 not eax
 pop edx
 pop ecx
 pop esi
 ret
 CRC32 endp
 inittable proc ; динамическое заполнение таблицы
 push ebx
 lea edx,hashtab ; указатель на выдел. память
 xor ebx,ebx
 initl:
 xor eax,eax
 mov al,bl
 xor cx,cx
 entryloop:
 test eax,1
 jz nobit
 shr eax,1
 xor eax,0EDB88320h
 jmp entrygon
 nobit:
 shr eax,1
 entrygon:
 inc cx
 test cx,8
 jz entryloop
 mov dword ptr [ebx*4+edx],eax
 inc bx
 test bx,256
 jz initl
 pop ebx
 ret
 inittable endp
   | Сообщение посчитали полезным:  |