zh002008
驱动牛犊
驱动牛犊
  • 注册日期2004-08-22
  • 最后登录2013-09-06
  • 粉丝1
  • 关注1
  • 积分545分
  • 威望155点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
阅读:1458回复:10

WIN98下文件及文件夹的隐藏实现方法及代码?

楼主#
更多 发布于:2004-12-08 09:55
WIN98下文件及文件夹的隐藏实现方法及代码?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-08 15:17
用ifs hook实现:
处理IFSFN_FINDOPEN,IFSFN_FINDNEXT,IFSFN_FINDCLOSE
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-08 15:46
这里有个例子,上次别人给我的。你试试吧。
附件名称/大小 下载次数 最后更新
2004-12-08_guzhiyu_FileGuard.zip (547KB)  29
zh002008
驱动牛犊
驱动牛犊
  • 注册日期2004-08-22
  • 最后登录2013-09-06
  • 粉丝1
  • 关注1
  • 积分545分
  • 威望155点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
地板#
发布于: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:
  }
可不能实现隐藏,为什么??急 谢谢
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-09 13:27
为什么我下载不了附件,老是下载个err.htm
内容:盗链是可耻的行为
特别是百度盗窃mp3的行为为世人为唾弃!
 :mad:
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-09 15:08
是否用 Norton Internet Security ?

能否请教tooflat问题吗? QQ:50994497

lhzh114@yahoo.com.cn
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
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);
}
}
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-10 09:25
贴代码老是有问题
附件名称/大小 下载次数 最后更新
2004-12-10_1.c (4KB)  15
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-10 10:18
我明明粘贴上去了。今天我下也不行了。不知道是咋回事。要的话留下email。我给你们发。
aethercat
驱动牛犊
驱动牛犊
  • 注册日期2003-08-20
  • 最后登录2005-06-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-10 14:52
挺长见识的!!!
lhzh114
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2008-12-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望37点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-12 20:50
拜托!
lhzh114@yahoo.com.cn

thanks
游客

返回顶部