Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизCRC Найти похожие ветки
← →
ИванИванычч (2005-01-31 14:52) [0]Такой вопрос: как можно подсчитать crc процедуры!! и в момент выполнения программы проверить этот самый crc?
← →
TUser © (2005-01-31 14:55) [1]На алголисте есть алгоритм
← →
Poirot © (2005-01-31 15:03) [2]а на rsdn есть статьи как считать CRC дял проги, но вот для процедуры - это сложнее.. нать узнать точку входа в процедуру для начала:)
← →
ИванИванычч (2005-01-31 15:05) [3]Там сейчас поискал, ничего толком не нашел.
Модет сможете подсказать как можно вычислить CRC конкретной процедуры, а не всего ЕХЕшника? Да + каким образом проверять CRC во время работы самой программы
← →
ИванИванычч (2005-01-31 15:07) [4]Точка входа- определить не проблема
← →
Digitman © (2005-01-31 15:11) [5]
> ИванИванычч
супер-пупер защиту от взлома пишешь ?
← →
TUser © (2005-01-31 15:13) [6]Точка входа есть @ИмяПроцедуры
← →
ИванИванычч (2005-01-31 15:16) [7]> супер-пупер защиту от взлома пишешь ?
Да нет, нужно для однйо программы сделать такую вещь :)
← →
Digitman © (2005-01-31 15:17) [8]
> ИванИванычч (31.01.05 15:16) [7]
нет ну а резон-то какой ?
ну, предположим, подсчитал ты CRC - дальше-то что с полученным значением делать намерен ?
← →
BiN © (2005-01-31 15:18) [9]ИванИванычч (31.01.05 15:07) [4]
Точка входа- определить не проблема
Конечно не проблема, а вот ты попробуй точку, а точнее, точки выхода определить... Дизассемблер свой еще не пробовал писать?
← →
jack128 © (2005-01-31 15:25) [10]function SameFunc: Integer;
begin
...
end;
procedure Dummy;
begin
end;
...
SameFuncSize := Integer(@Dummy) - Integer(@SameProc);
Теперь у тя есть указатель на область памяти (@SameFunc) и её размер(SameFuncSize) алгоритм расчета СRС уже говрили где искать..
← →
ИванИванычч (2005-01-31 15:27) [11]> jack128 © (31.01.05 15:25) [10]
Огромнейшее спасибо за помощь
← →
Digitman © (2005-01-31 15:30) [12]
> ИванИванычч (31.01.05 15:27) [11]
только не вздумай сравнивать полученную в ран-тайм CRC c той что была расчитана для соответствующего процедуре фрагмента исп.файла
при позизионно-зависимом коде процедуры ты наверняка не получишь совпадения
← →
k@rt © (2005-01-31 17:51) [13]А что такое CRC? =)
← →
default © (2005-01-31 18:01) [14]k@rt © (31.01.05 17:51) [13]
хеш-функция
← →
GuAV © (2005-01-31 19:13) [15]Digitman © (31.01.05 15:30) [12]
при позизионно-зависимом коде процедуры ты наверняка не получишь совпадения
Если программа - ехе файл со стандартным ImageBase то совпадение наверняка получится, т.к. код ехе не перемещается, более того у многих ехе отсутсвует секция .reloc что не сказывается на их работоспособность.
← →
Defunct © (2005-01-31 19:47) [16]ИванИванычч (31.01.05 14:52)
16-ти разрядный CRC расчитывается циклически по полиному:
х16+х12+х5+1
1. Расчитайте CRC кода и выведите его на экран.
2. Запомните его в программе как константу.
3. Расчитывайте CRC в процессе работы программы и сравнивайте с сохраненной константой.
сделайте цикл:
SaveCRC/CalculatedCRC : Word
{$R-}
for i := 1 to SavedCRC - CalculatedCRC do
asm
Push Eax
end;
подвесит программу намертво при несовпадении CRC.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c