40楼#
发布于:2007-11-30 16:11
怎样解除隐藏啊?RemoveHideObj函数里应该怎么编写?CHAR DevicePath[] = "\\\\.\\SFilter";
DWORD junk; // discard results WCHAR inBuffer[256]; HANDLE hDevice; ZeroMemory(inBuffer, sizeof(inBuffer)); MultiByteToWideChar(CP_ACP, 0, lpName, strlen(lpName), inBuffer, sizeof(inBuffer)); hDevice = CreateFile(DevicePath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (INVALID_HANDLE_VALUE == hDevice) { printf("%s Device Failed Error Code:[%08x]\n", DevicePath, GetLastError()); return; } if (CDO_FLAG_FILE & Flag) { if(!DeviceIoControl(hDevice, CDO_REMOVE_FILE, inBuffer, sizeof(inBuffer), NULL, 0, &junk, NULL)) { printf("DeviceIoControl Error Code:[%08x]\n", GetLastError()); } else { printf("CDO_REMOVE_FILE %ws\n", inBuffer); } } if (CDO_FLAG_DIRECTORY & Flag) { if(!DeviceIoControl(hDevice, CDO_REMOVE_DIRECTORY, inBuffer, sizeof(inBuffer), NULL, 0, &junk, NULL)) { printf("DeviceIoControl Error Code:[%08x]\n", GetLastError()); } else { printf("CDO_REMOVE_DIRECTORY %ws\n", inBuffer); } } 这样行吗 |
|
41楼#
发布于:2007-12-17 15:56
好东西,顶
|
|
42楼#
发布于:2007-12-25 10:38
本人正在学习文件驱动开发,谢谢楼主
|
|
43楼#
发布于:2008-01-18 19:56
一定要顶
|
|
|
44楼#
发布于:2008-02-20 11:16
学习
|
|
45楼#
发布于:2008-03-18 13:26
谢谢楼主共享。。先学习学习
|
|
|
46楼#
发布于:2008-03-27 09:02
第一个隐藏不了
第一个隐藏不了 有BUG |
|
|
47楼#
发布于:2008-03-28 16:17
谢谢,研究下!
|
|
48楼#
发布于:2008-04-01 08:13
DirectoryControlComplete proc DeviceObject,pIrp,Context
pushad invoke KeSetEvent,Context,IO_NO_INCREMENT,0 popad mov eax,STATUS_MORE_PROCESSING_REQUIRED ret DirectoryControlComplete endp DispatchDirectoryControl proc DeviceObject,pIrp local waitEvent:KEVENT pushad mov edx,pIrp mov esi,[edx+60h] ;CurrentStackLocation .if byte ptr[esi+1]!=1 || byte ptr[edx+20h]==KernelMode || dword ptr[esi+0ch]!=3 jmp _end .endif invoke KeInitializeEvent,addr waitEvent,NotificationEvent,0 mov edx,pIrp ;IoCopyCurrentIrpStackLocationToNext mov esi,[edx+60h] mov ecx,7 lea edi,[esi-sizeof IO_STACK_LOCATION] ;[esi-24h] rep movsd mov edx,pIrp ;IoSetCompleteRoutine mov esi,[edx+60h] sub esi,24h mov [esi+1ch],offset DirectoryControlComplete lea eax,waitEvent mov [esi+20h],eax ;Context mov byte ptr[esi+3h],SL_INVOKE_ON_SUCCESS or SL_INVOKE_ON_ERROR or \ SL_INVOKE_ON_CANCEL mov edx,pIrp mov ecx,DeviceObject mov ecx,[ecx+28h] ;DeviceExtension mov ecx,(HOOK_EXTENSION ptr[ecx]).FileSystem call IofCallDriver .if eax == STATUS_PENDING invoke KeWaitForSingleObject,addr waitEvent,Executive,KernelMode,0,0 .endif mov edx,pIrp mov esi,[edx+60h] ; .if eax != STATUS_SUCCESS || dword ptr[esi+4] == 0 ; jmp _1 ; .endif ; invoke HandleDirectoryControl,dword ptr[edx+3ch],esi _1: popad invoke IoCompleteRequest,pIrp,IO_NO_INCREMENT ret _end: popad mov edx,pIrp inc byte ptr[edx+23h] ;CurrentLocation add dword ptr[edx+60h],24h ;CurrentStackLocation mov ecx,DeviceObject mov ecx,[ecx+28h] ;DeviceExtension mov ecx,(HOOK_EXTENSION ptr[ecx]).FileSystem call IofCallDriver ret DispatchDirectoryControl endp 这个是依照你的代码写的,为什么不行呢?? |
|
|
49楼#
发布于:2008-04-01 11:20
支持楼主的共享精神!
|
|
50楼#
发布于:2008-04-01 12:43
学习一下,谢谢楼主
|
|
51楼#
发布于:2008-04-01 14:37
在cmd下可以看到隐藏的文件,可以直接dir出来
|
|
52楼#
发布于:2008-04-06 10:27
非常需要,文件操作我都不懂好好学习。
|
|
53楼#
发布于:2008-06-13 17:57
thank you
|
|
54楼#
发布于:2008-06-23 15:03
学习。谢谢
|
|
55楼#
发布于:2008-07-11 15:22
赞一个
|
|
56楼#
发布于:2008-08-09 01:34
这种隐藏方法很好,很不错。可以用来防止文件被感染,应用到安全方面很理想!不用阴得太深,而又能防止目录文件被枚举到。相比其他方法不会造成读取相对路径程序出错。比如说:你隐藏了某个大型游戏,这个游戏还可以正常运行!
但是其他的方法就会造成系统崩溃了(hook ZwQueryDirectoryFile),只能用来隐藏rootkit类的单个执行文件比较合适。 但是,该程序有个严重的BUG,我一直没有找出来,就是某些目录文件可能没法隐藏!!!!!!!(有时,第一个添加隐藏的目录打死都隐不了) 希望作者能解决该漏洞,如果哪位朋友能解决请给我一份解决方法:xmaker@126.com |
|
57楼#
发布于:2008-08-09 15:05
引用第6楼rockmanxyj于2007-09-06 17:08发表的 : |
|
|
58楼#
发布于:2008-08-09 19:05
谢谢,学习了
|
|
59楼#
发布于:2008-08-19 14:28
刚下了,有空研究下
|
|