Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
3-1105636223
tytus
2005-01-13 20:10
2005.02.13
Как лучше удалить записи из БД?


14-1106229560
Поручик
2005-01-20 16:59
2005.02.13
Поздравьте меня


6-1101747637
alexa
2004-11-29 20:00
2005.02.13
icmp-пакеты


1-1107168551
Алексей
2005-01-31 13:49
2005.02.13
QuickReport


9-1099849062
MsShtaer
2004-11-07 20:37
2005.02.13
Тени в DirectX