Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.
Поиск файлов
A: (Leprecon)
Оригинальная ссылка: нету

Функция поиска файлов по маске в заданной и вложенных папках.
BOOL SearchFiles(
 
         LPCTSTR lpszFileName,                // Директория и маска файлов для поиска
 
         LPSEARCHFUNC lpSearchFunc,            // Функция, вызываемая для всех найденных файлов.
 
         BOOL bInnerFolders /* = TRUE */)    // TRUE - поиск в подпапках.
 
                                             // FALSE - поиск только в заданной папке
typedef void (*LPSEARCHFUNC)(LPCTSTR lpszFileName);
 
 
 
 BOOL SearchFiles(LPCTSTR lpszFileName, LPSEARCHFUNC lpSearchFunc, BOOL bInnerFolders = TRUE)
 
 {
 
     LPTSTR part;
 
     char tmp[MAX_PATH]; // временный массив
 
     char name[MAX_PATH];
 
 
 
     HANDLE hSearch = NULL;
 
     WIN32_FIND_DATA wfd;
 
     memset(&wfd, 0, sizeof(WIN32_FIND_DATA));
 
 
 
     // сначало поиск внутри вложенных папках ...
 
     if(bInnerFolders)
 
     {
 
         if(GetFullPathName(lpszFileName, MAX_PATH, tmp, &part) == 0) return FALSE;
 
         strcpy(name, part);
 
         strcpy(part, "*.*");
 
 
 
         // если папки существуют, то делаем поиск
 
         wfd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
 
         if (!((hSearch = FindFirstFile(tmp, &wfd)) == INVALID_HANDLE_VALUE))
 
         do
 
         {
 
             // в каждой папке есть две папки с именами "." и ".."
 
             // и эти папки мы не трогаем
 
 
 
             // пропускаем папки "." и ".."
 
             if (!strncmp(wfd.cFileName, ".", 1) || !strncmp(wfd.cFileName, "..", 2))            
 
             continue;
 
         
 
             if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // если мы нашли папку
 
             {
 
                 char next[MAX_PATH];
 
                 if(GetFullPathName(lpszFileName, MAX_PATH, next, &part) == 0) return FALSE;
 
                 strcpy(part, wfd.cFileName);
 
                 strcat(next, "\\");
 
                 strcat(next, name);
 
 
 
                 SearchFiles(next, lpSearchFunc, TRUE);
 
             }
 
         }
 
         while (FindNextFile(hSearch, &wfd)); // ищем следующий файл
 
 
 
         FindClose (hSearch); // заканчиваем поиск
 
     }
 
 
 
     if ((hSearch = FindFirstFile(lpszFileName, &wfd)) == INVALID_HANDLE_VALUE)
 
         return TRUE; // в противном случае выходим
 
     do
 
     if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) // если мы нашли файл
 
     {
 
         char file[MAX_PATH];
 
         if(GetFullPathName(lpszFileName, MAX_PATH, file, &part) == 0) return FALSE;
 
         strcpy(part, wfd.cFileName);
 
 
 
         lpSearchFunc(file);
 
     }
 
     while (FindNextFile(hSearch, &wfd)); // ищем следующий файл
 
     FindClose (hSearch); // заканчиваем поиск
 
 
 
     return TRUE;
 
 }
Пример 1.
Поиск всех файлов с расширением txt в папке "C:\Dir1" и вложенных в нее папках.
SearchFiles("C:\Dir1\*.txt", DoSomething, TRUE);
Пример 2.
Поиск всех файлов с именем name и любым расширением только в папке "C:\Dir1"
SearchFiles("C:\Dir1\name.*", DoSomething, FALSE);
Пример функции DoSomething
void DoSomething(LPCTSTR lpszFileName)
 
 {
 
     MessageBox(NULL, lpszFileName, "Find File", MB_OK | MB_APPLMODAL);
 
 }
 
 
Статья основана на примере SUnteXx'a
Если есть какие-то замечания, предложения или что-то еще, то пишите:
leprecon@pisem.net.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS