Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Сигнатура


Автор: Rever 10.4.2010, 10:53
Мне нужно организовать поиск сигнатуры.
Допустим есть сигнатура (ну например ca64a10a706173c4776f7d72e1d)
Есть файл file.exe
Нужно определить присудствует ли сигнатура в файле.
Как это сделать, а то толком ниче не понял, помогите плз! 
Зарание спасибо!

Автор: boostcoder 10.4.2010, 11:01
Цитата(Rever @  10.4.2010,  10:53 Найти цитируемый пост)
Нужно определить присудствует ли сигнатура в файле.

как подстрока? или как хеш сумма какого-то блока?

Автор: Rever 10.4.2010, 11:04
Эм, я даж и не знаю=)
Какнибудь, прост найти сигнатуру эту, пример просто нужен
Вообщем принцип нужен можно сказать как в антивирусниках

Автор: boostcoder 10.4.2010, 11:08
Цитата(Rever @  10.4.2010,  11:04 Найти цитируемый пост)
Вообщем принцип нужен можно сказать как в антивирусниках

уже лучше smile
осталось узнать, какого алгоритма эта хеш сумма?

Добавлено через 54 секунды
странно, 27 знаков smile

Автор: W4FhLF 10.4.2010, 11:27
boostcoder, это не хеш, а сигнатура. Часть бинарного кода файла или его заголовка, данных. 

Rever, 

Читаешь файл в бинарном режиме побайтно. 
 Сравниваешь первый байт файла с первым байтом сигнатуры. 
   Совпали. Сравниваешь со вторым и последующими.
   Не совпали.
 Читаешь второй байт файла и снова сравниваешь с первым байтом сигнатуры.


Автор: boostcoder 10.4.2010, 11:30
Цитата(W4FhLF @  10.4.2010,  11:27 Найти цитируемый пост)
boostcoder, это не хеш, а сигнатура.

крайне сложно понять, что ТС имеет именно это в виду.

Автор: Rever 10.4.2010, 11:36
Ну эту сигнатуру взял с какойто базы антивиря=)
ну допустим что есть какаято сигнатура , алгоритм MD5

Автор: W4FhLF 10.4.2010, 11:39
Так сигнатура или хеш или хеш сигнатуры или хеш файла, в котором сигнатура?smile Определись вообще, что ты хочешь, какую задачу решить. 

А потом иди учи основы программирования. И вопросы задавай в раздел для новичков. 

Автор: assasincore 13.4.2010, 13:38
ca64a10a706173c4776f7d72e1d - Не факт что это последовательность байт. Полный ли это кусок? 

ca64 a1 0a 70 61 73c4 776f 7d 72 e1d

Это может быть.
 MD5
 CRC.  
 Сткрутура 

Пример

struct SignPattern
{
      DWORD offset;
      DWORD crc32;
};

struct DescSignatru
{
     SignPattern pattern1; 
     SignPattern pattern1;
};

П.С. 15 байтная последовательность очень маленькая что бы быть сигнатурой. Так что это либо структура либо CRC(MD5 или еще че... )


П.С.
Если дизассембилировать последовательность то получим.

0100149C >   CA 64A1        RETF 0A164                               ;  Far return
0100149F     0A70 61         OR DH,BYTE PTR DS:[EAX+61]
010014A2    ^73 C4           JNB SHORT IzSrv.01001468
010014A4     77 6F             JA SHORT IzSrv.01001515
010014A6     7D 72            JGE SHORT IzSrv.0100151A
010014A8    ^E1 CC          LOOPDE SHORT IzSrv.01001476

И это можеть байть последовательность байт для создание сигнатры? нет... 

Rever При все при том что я на форме новенький, тебе к новичкам. Знай свое место школота.. 
Да и к тому где уверенность что вы взяли кусок сигнатуры?

Автор: jhonyxakep 16.4.2010, 14:47
assasincore, мда грузанул....


Rever, может тебе надо просто вычислить хеш файла?
В общем сигнатура - это запись в базе данных вирусов, если брать антивирусы то это сочетание имени вируса, разнообразных данных о нем, и его сигнатуры. При помощи хеша можно сравнить 2 файла (к примеру тело вируса пойманное в антивирусной лаборотории, и у пользователя на компе) не храня при этом в базе весь файл, или большую его часть...
Другое дело что если вам требуется(хочется smile ) написать что-нибудь антивирусное, метот сигнатурного анализа уже устарел, хотя есть еще неплохие алгоритмы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)