Посл.ответ |
Сообщение |
Ранг: 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
| Сообщение посчитали полезным: |