阅读:1458回复:10
WIN98下文件及文件夹的隐藏实现方法及代码?
WIN98下文件及文件夹的隐藏实现方法及代码?
|
|
沙发#
发布于:2004-12-08 15:17
用ifs hook实现:
处理IFSFN_FINDOPEN,IFSFN_FINDNEXT,IFSFN_FINDCLOSE |
|
板凳#
发布于:2004-12-08 15:46
这里有个例子,上次别人给我的。你试试吧。
|
|
|
地板#
发布于:2004-12-08 17:12
if(Hide)
{ if(fcn==IFSFN_FINDOPEN) { A= (*PrevIFSHookProc)(pfn,IFSFN_FINDNEXT,Drive,Res,Page,irq); if(A==0) { (*PrevIFSHookProc)(pfn,IFSFN_FINDCLOSE,Drive,Res,Page,irq); } else { return A; } } else { goto EXIT: } 可不能实现隐藏,为什么??急 谢谢 |
|
地下室#
发布于:2004-12-09 13:27
为什么我下载不了附件,老是下载个err.htm
内容:盗链是可耻的行为 特别是百度盗窃mp3的行为为世人为唾弃! :mad: |
|
5楼#
发布于:2004-12-09 15:08
是否用 Norton Internet Security ?
能否请教tooflat问题吗? QQ:50994497 lhzh114@yahoo.com.cn |
|
6楼#
发布于:2004-12-10 09:22
int _cdecl IfsHookFunc(
pIFSFunc pfn, int fn, int Drive, int ResType, int CodePage, pioreq pir) { _WIN32_FIND_DATA *pfd; _WIN32_FIND_DATA_BCS fdbcs; DWORD index; UCHAR *p; UCHAR searchpath[MAX_PATH] = {0}; UCHAR bcsname[MAX_PATH] = {0}; WORD uniname[MAX_PATH] = {0}; _QWORD result; WORD err; WORD attr; int len; int rval; int i; HANDLE handle; switch (fn) { case IFSFN_FINDOPEN: // // 可以通过pir->ir_fh来标识每次搜索,所以可以把pir->ir_fh和搜索路径关联起来 // // // 调用FSD取得结果 // rval = (* ppPrevHook)(pfn, fn, Drive, ResType, CodePage, pir); if (rval != ERROR_SUCCESS) {KdPrint(("findopen: ret = %d\n", rval)); return rval;} // 分配一个搜索上下文结构,保存pir->ir_fh和搜索路径,返回索引 index = Fetch1UnusedSCEntry(); if (index == INVALID_ENTRY) return rval; // // 取得搜索路径 // UniToBCSPath(&searchpath[2], pir->ir_ppath->pp_elements, sizeof(searchpath) - 1, CodePage, &result); searchpath[0] = Drive + '@'; searchpath[1] = ':'; // 保存ir_fh & path g_psc[index].ir_fh = pir->ir_fh; strcpy(g_psc[index].path, searchpath); // // 截去后面的通配符,取得目录 // p = strrchr(g_psc[index].path, '\\'); if (p) *(p + 1) = '\0'; while (rval == 0) { // // 取得返回结果 // pfd = (_WIN32_FIND_DATA *) pir->ir_data; len = ustrlen(pfd->cFileName); UniToBCS(bcsname, pfd->cFileName, len * sizeof(WORD), sizeof(bcsname) - 1, CodePage, &result); bcsname[len] = '\0'; if (!IsFileDirectoryHidden(&g_psc[index], bcsname)) break; // 不需要过滤 // 否则继续调用FSD并过滤 rval = (* ppPrevHook)(pir->ir_hfunc->hf_read, IFSFN_FINDNEXT, Drive, ResType, CodePage, pir); } // 出现错误,释放搜索上下文结构 if (rval != 0) g_psc[index].ir_fh = 0; // 标记为未使用 else KdPrint(("findopen: ir_fh = 0x%08x\n", g_psc[index].ir_fh)); return rval; case IFSFN_FINDNEXT: // // 可以通过pir->ir_fh来标识每次搜索,所以可以把pir->ir_fh和搜索路径关联起来 // 我们以此来取得文件的绝对路径 // rval = (* ppPrevHook)(pfn, fn, Drive, ResType, CodePage, pir); if (rval != ERROR_SUCCESS) {KdPrint(("findnext: ret = %d\n", rval)); return rval;} KdPrint(("findnext: ir_fh = 0x%08x\n", pir->ir_fh)); index = SearchSCEntry(pir->ir_fh); if (index == INVALID_ENTRY) {KdPrint(("findnext: invalid search request!\n")); return rval;} pfd = (_WIN32_FIND_DATA *) pir->ir_data; len = ustrlen(pfd->cFileName); UniToBCS(bcsname, pfd->cFileName, len * sizeof(WORD), sizeof(bcsname) - 1, CodePage, &result); bcsname[len] = '\0'; // // 是不是要隐藏的文件 // if (IsFileDirectoryHidden(&g_psc[index], bcsname)) return IfsHookFunc(pfn, fn, Drive, ResType, CodePage, pir); // 不要调用底层的,因为我们需要过滤结果 else return rval; case IFSFN_FINDCLOSE: // // 清除对应的SEARCH_CONTEXT // KdPrint(("findclose: ir_fh = 0x%08x\n", pir->ir_fh)); index = SearchSCEntry(pir->ir_fh); if (index == INVALID_ENTRY) KdPrint(("findclose: invalid search request!\n")); else g_psc[index].ir_fh = 0; return (* ppPrevHook)(pfn, fn, Drive, ResType, CodePage, pir); } } |
|
7楼#
发布于:2004-12-10 09:25
贴代码老是有问题
|
|
|
8楼#
发布于:2004-12-10 10:18
我明明粘贴上去了。今天我下也不行了。不知道是咋回事。要的话留下email。我给你们发。
|
|
9楼#
发布于:2004-12-10 14:52
挺长见识的!!!
|
|
10楼#
发布于:2004-12-12 20:50
拜托!
lhzh114@yahoo.com.cn thanks |
|