Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlexUr
0 / 0 / 0
Регистрация: 12.03.2009
Сообщений: 6
#1

Поиск ехе файла по сигнатуре. - C++

03.04.2009, 18:21. Просмотров 740. Ответов 0
Метки нет (Все метки)

Здравствуйте . Возникла проблема при поиске ехе файла по сигнатуре.
1)Представленная программа должна находить указанный, в соответствии с данной сигнатурой, ехе файл в заданной папке.(В нашем случае текущая директория – диск С).Программа после компиляции выводит сообщениечто не может открыть ни один ехе файл.
File B not open
File v not open
и.т.д.
Скажите в чем может быть причина неполадки?
2)Как кроме этого получить полный путь к найденным файлам?
Платформа выполнения VS С++
Заранее спасибо.

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#include <stdlib.h>
#include <winbase.h>

using namespace std;

#define PATH_LEN 128

//смешение 1230h

const char signature[17]={(char)0xc9, (char)0xd4,(char)0xde ,(char)0x77 ,(char)0x1b ,(char)0x76 ,
(char)0xdc,(char) 0x77 ,(char)0x83, (char)0x78 ,(char)0xdc ,(char)0x77,
(char)0xf0 ,(char)0x6b ,(char)0xdc ,(char)0x77,'\0'};

FILE *outFile = fopen("input.txt", "w");
FILE *inFile;
char lpBuffer[PATH_LEN];

void FileFind(char *Dir, bool f)
{
SetCurrentDirectory(LPCWSTR(Dir));
LPWIN32_FIND_DATA ffd = new WIN32_FIND_DATA;
char MZ[] = {(char)0x4D, (char)0x5A};
memset (ffd, 0, sizeof (WIN32_FIND_DATA));
HANDLE hSearch = FindFirstFile (LPCWSTR("*"), ffd);
char str[2];
char sig[17];
//обход файлов в директории
do
{
if ((ffd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))// если файл директория
{
if (ffd->cFileName[0] != '.' && f)
FileFind((char*)(ffd->cFileName), f);//Вызываем функцию поиска в рекурсии
}

else
{
if (!(inFile = fopen((const char*)(ffd->cFileName), "rb")))
printf("\nFile %s not open\n", ffd->cFileName);
else
{
for (int i = 0; i < 2; i ++)
fscanf(inFile,"%c", &str[i]);
char d[PATH_LEN];
GetCurrentDirectory(PATH_LEN, LPWSTR(d));
if (strcmp(str, MZ) == 0)//Проверяем является ли файл ехе
{
fseek(inFile, 0x1230,SEEK_SET);
for (int i = 0; i < 16; i ++)
if (!feof(inFile))
fscanf(inFile, "%c", &sig[i]);
else
{
fprintf(inFile,"in file %s\\%s signature not found\n", ffd->cFileName);
printf("in file %s\\%s signature not found\n", ffd->cFileName);
FindNextFile(hSearch, ffd);
break;
}
sig[16] = '\0';
if (strcmp(sig, signature) == 0){
fprintf(outFile,"in file %s\\%s SIGNATURE FOUND\n", d,ffd->cFileName);
printf("in file %s\\%s SIGNATURE FOUND\n", d,ffd->cFileName);}
//else
// fprintf(outFile,"in file %s\\%s signature not found\n", d,ffd->cFileName);
}
memset(str, 0, 3);
memset(sig, 0, 16);
fclose(inFile);
}
}
}
while (FindNextFile (hSearch, ffd));
SetCurrentDirectory(LPCWSTR(".."));
_getch();
CloseHandle (hSearch);
delete ffd;

}


void _tmain(int argc,char *argv[])
{
char lpBuffer[PATH_LEN];
bool f = false;

FileFind(lpBuffer, f);

}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2009, 18:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск ехе файла по сигнатуре. (C++):

создание .ехе файла - C++
Здраствуйте меня мучает вопрос- как из програм которые я делал ( console application) сделать отдельные .ехе файлы , или просто...

Создание .ехе файла - C++
У меня установлена Borland Developer Studio Turbo C++. При создании программки, создается и .ехе файл. У меня на компе он запускается и...

Структура ехе файла - C++
Где можно подробно прочитать про структуру ехе? мне например надо данные о файле получить, ресурсы, классы, указатели на экспортируемые...

Запуск .ехе-шного файла - C++
Как запустить имеющийся .ехе-шный файл средствами С++?

Создание .ехе файла, работающего без подключения библиотек на других компьютерах - C++
Привет всем. вопрос такой. как в sublime text 3 создать ехе файл(С++(mingw)), который на других компах будеть работать без...

Нарисуйте схему создания проекта, как из срр-файла получается ехе-файл? - C++
Нарисуйте схему создания проекта, как из срр-файла получается ехе-файл?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2009, 18:21
Привет! Вот еще темы с ответами:

"Прекращена работа программы 3.ехе . Windows осуществляет поиск способа устранения этой ошибки" - C++
сначала не запускалось окошко - теперь выводится, но через секунд 10 выбивает окошко &quot;Прекращена работа программы 3.ехе . Windows...

Объявление функций. Амперсанд в сигнатуре метода - C++
На днях начал изучать С++. Сам джавист. Вижу такую сигнатуру: void write_analysis(ostream&amp; out, const string&amp; name, double analysis(const...

Использование private-членов класса в сигнатуре методов - C++
Делаю типовую задачу с собеседованием - рекурсивный разворот односвязного списка. Сама функция работает, не могу довести до ума: void...

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле - C++
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим папкам пройтись и из каждой папки в этом файле достать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru