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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как все убрать с экрана? http://www.cyberforum.ru/cpp-beginners/thread28607.html
Здравствуйте все) Я пишу морской бой и у меня возникла такая проблема: у меня есть метод класса (пусть будет "Temp") PrinFields() который печатает два массива, например int main() { Temp temp;...
C++ программирование в WIindows Vista есть ли компилятори и пр. для WIindows Vista? какой программой нужно пользоваться, что бы писать программы на C++, под WIindows Vista или WIindows XP SP2? и каких из них поддерживает эти операционные... http://www.cyberforum.ru/cpp-beginners/thread28599.html
Вычислить сумму элементов матрицы в заштрихованной области C++
1) Вычислить сумму элементов матрицы в заштрихованной области. Уведення и вывод матрицы оформить в виде процедур. 2) Составить программу решения задачи на С++. Вывод матрицы на экран оформить в...
Превратить исходный массив, поменяв местами все пары соседних элементов C++
1) Составить программу решения задачи на С++ и Паскале, использовать процедуры введения и вывода массивов, выделить в задаче вспомогательные алгоритмы и оформить их в виде подпрограмм. Превратить...
C++ Сколько раз встречалось заданное слово в текстовом файле? http://www.cyberforum.ru/cpp-beginners/thread28516.html
помогите пожалуйста написать програмку на С++ задача: написать программу, которая определяет сколько раз встречалось заданное слово в текстовом файле. Текст не содержит переносов слов. Мax длинна...
C++ Строки Помоги разобраться. Переписываю код с книжкиVisual CPP 6 - Руководство Разработчика, компилирую в MS VS2008 - выбивает ошибки #include "stdafx.h" #include <iostream> using namespace std;... подробнее

Показать сообщение отдельно
AlexUr
0 / 0 / 0
Регистрация: 12.03.2009
Сообщений: 6

Поиск ехе файла по сигнатуре. - 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru