Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бинарные файлы (Поиск сигнатуры), Необходим совет по поиску в bin файле 
:(
    Опции темы
in550
  Дата 16.1.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 11
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



О позор мне!  smile 

Необходимо написать программу на С++, которая сверяла бы
с массивом и смогла находить файлы, как антивирус.

(Чистый Си - без апи.)

Нужно: помочь написать программку для того чтобы она искала в
файле сигнатуру (без базы). Т.е. запустил программу - она прочитала
файл "test.exe" - если нашла сигнатуру, то принтф "Бла бла".

Другими словами - нужен совершенно примитивный антивирус!
Заранее спасибо. чтото мне в голову ничего не приходит.

Как у вас на форуме написано в одной из тем:

Код

ifstream s_in(pathifile);
                //Читаем из него символы до конца файла
                //
                while(!s_in.eof())
                    {
                    s_in >> m_cFload; //Читаем символ
                    
                    if(!s_in.eof())
                        {
                        m_iSign = m_cFload; //и присваиваем переменной
                        }
                    //Закрываем поток
                    }
                s_in.close();
                
                // пишем на экране статистику для красоты
                cout << "Find:\n" << pathifile << "\t" << m_iSign <<"\n" << endl;
                // начинаем сверку с массивом базы данных
                for(int m_is=0;m_is<iVBases;m_is++)
                {
                    if(m_iSign==m_liCheck[m_is])
                    {
                        // если совпало, сообщаем
                        MessageBox(NULL, pathifile, "Игрушка", MB_OK); //change
                    }
                }


Только без использования базы. И с подчетом КС. Как у Лозинского за 1988 год. 
Чтото вроде того!

И как её потом от отладки и изучения  защитить? 
Типа: #pragma comment(linker,"/ENTRY:main")

Это сообщение отредактировал(а) in550 - 16.1.2007, 14:53
PM MAIL   Вверх
Anikmar
Дата 16.1.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



А что не приходит в голову?
Есть сигнатура
Открываем файл в бинарном режиме.
Считываем с 1-го байта в буфер, размер которого равен размеру буфера с сигнатурой.
Сравниваем.
Если не подходит - считываем буфер со 2-го символа и т.д. до конца файла (Размер - размер сигнатуры)...

А по поводу невидимости и защиты от отладки - это отдельная тема, но 100% защиты от отладки в принципе быть не может, весь вопрос в цене взлома.
PM MAIL ICQ   Вверх
jonie
Дата 16.1.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата

И как её потом от отладки и изучения  защитить? 
Типа: #pragma comment(linker,"/ENTRY:main")
гарантированно не так). и вообще средставми линкера много не на защищаешь...
Цитата

Считываем с 1-го байта в буфер, размер которого равен размеру буфера с сигнатурой.
Сравниваем.
Если не подходит - считываем буфер со 2-го символа и т.д. до конца файла (Размер - размер сигнатуры)...
наверно можно изгольнуться и не перечитывать то что уже читали, а дочитывать только то что надо (кольцевой буфер?) имхо гораздо быстрее будет... а можно читать сначаал 1 байт и сравнивать с 1-ым байтом структуры...(чтобы найти предпологаемое начало сигнатуры) потом уже остальные байты.. так верно еще быстрее....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Arks
Дата 16.1.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



Ещё можно использовать какой-либо алгоритм поиска подстрок, например, алгоритм Кнута-Морриса-Пратта.
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.