|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 18, 2004 22:57:21 bogrus Да, именно этим и придется заниматься. Funbit Разве можно посчитать crc кусками, а потом посчитать общую crc? там же зависимоть в одну сторону... |
|
|
Дата: Июн 18, 2004 23:09:37 dShell Я привёл аналогию изменения поля CheckSum в PE заголовке . Потом оно пересчитываеться за миллисекунду , поищи как это делает например PE Explorer , PE Tools ... |
|
|
Дата: Июн 19, 2004 01:09:55 · Поправил: Funbit dShell CRC32 штука последовательная, допустим нужно посчитать CRC32 от строки "AAAABBBBCCCC", что мы будем иметь в цикле расчета стоя на позиции первой буквы C ? мы будем иметь промежуточный DWORD, который зависит от символов, предшествующих букве С. все, больше ни от чего этот DWORD не зависит. таким образом заменив мэджик константу (-1 обычно) в начале CRC32, мы можем сунуть в ф-цию расчета CRC32 массив "CCCC", а получим CRC32 такой, как-будто мы подсчитали его от всей строки "AAAABBBBCCCC"... запутанно, но если пару раз прочитать, понять можно :) |
|
|
Дата: Июн 19, 2004 02:02:26 И вообще, если это делать для защиты от модификации, то для КОНКРЕТНОГО кода очень маловероятно что найдется такое CRC. Выход, на мой взгляд, только один: изменять частичку bytes_1 или bytes_2 -- т.е. создать что то вроде вспомогательного "балласта". А тогда что мешает взломщику изменить этот "балласт"? Или вопрос чисто теоретический и до практики дело не дойдет?) Пытался выразить свою мыслю как мог ;) Кстати, чему равна средняя вероятность того, что для конкретного кода найдется такое n-битное CRC? 2-n ??? |
|
|
Дата: Июн 19, 2004 02:10:57 · Поправил: B_108 Ошибся, мы берем одно начальное значение CRC, считаем CRC2=crc(bytes_1 + CRC + bytes_2) Вероятность того, что CRC=CRC2 2-n Но у нас 2n попыток... Или меня не туда прет ;) Спать пора. |
|
|
Дата: Июн 19, 2004 02:26:54 Какая-то фантастика но получается вероятность НЕУДАЧИ (1-2^(-n))^(2^n) |
|
|
Дата: Июн 19, 2004 02:44:58 Во всяком случае функция f(n)=(1 - 2-n)2^n при увеличении n также возрастает. Это обнадеживает. ЗЫ Похоже я сам себе пишу и сам себе же отвечаю... |
|
|
Дата: Июн 21, 2004 21:31:22 · Поправил: dShell B_108 Извиняюсь, что не приходил - сессия штука убийственная :-) но 4 по алгебре того стоит :)) Насчет балласта - вроде, как я помню, у ехе в башке есть пару байт под crc - собствевенная нужды доси. Но реально их никто не юзает. Появилась идея таким вот образом получить боле менее факт измененния проги. а балласт можно еидать уже после всех секций. Балласт - некоторое число байт, которое никто не запрещает увеличивать в разумных пределах. Четкой математика написать пока не могу. Но сверх упрощенная модель подбора (когда crc не в башке а вонце файла): [начальный файл][i байт][2^32 - crc] Считаем CRC' == crc("[начальный файл]"), чтобы ускорить процес. В самом начале пытаемся обойтись без балласта (i == 0). Если не нашли crc, считаем CRC'' == crc(перебираем 256 вариантов с одним i-байтом. ... не факт что остановимся :-( но по принципу Дирихле, нам должна достаться хотя бы одна клетка. |
|
|
Дата: Июн 22, 2004 00:47:03 dShell не факт что остановимся :-( но по принципу Дирихле, нам должна достаться хотя бы одна клетка пошел учить :) я матику еще не сдавал :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084 |