如果您提供的代码能达到金山文件粉碎器效果,支付1000元人民币作为报酬。
联系方式:[email protected]
QQ:7357353以下是金山文件粉碎器的简介:文件粉碎器大多数情况下,Windows自带的文件删除并不彻底,文件被删除后,他人仍然可以通过一些磁盘工具进行恢复。所以对于一些想彻底删除的文件,可以使用文件粉碎器进行彻底删除。
详见:http://www.duba.net/zt/ksc/help/html/a_402file.htm就算是顽固的注入型DLL文件,金山文件粉碎器也能将其搞定,就算不能搞定的,也将其改名为KKKKKK之类的名称(顽固无法删除的DLL一般不能直接删除,也不能改名,但金山却能够做到,怀疑金山文件粉碎器有相当高的底层权限。)请高手接分接RMB!
联系方式:[email protected]
QQ:7357353以下是金山文件粉碎器的简介:文件粉碎器大多数情况下,Windows自带的文件删除并不彻底,文件被删除后,他人仍然可以通过一些磁盘工具进行恢复。所以对于一些想彻底删除的文件,可以使用文件粉碎器进行彻底删除。
详见:http://www.duba.net/zt/ksc/help/html/a_402file.htm就算是顽固的注入型DLL文件,金山文件粉碎器也能将其搞定,就算不能搞定的,也将其改名为KKKKKK之类的名称(顽固无法删除的DLL一般不能直接删除,也不能改名,但金山却能够做到,怀疑金山文件粉碎器有相当高的底层权限。)请高手接分接RMB!
要直接访问NTFS/FAT表数据
Var
Buffer: Array[0..4095] Of Byte;
Max, n: LongInt;
I: Integer;
FS: TFileStream; Procedure RandomizeBuffer;
Var
I: Integer;
Begin
For I := Low(Buffer) To High(Buffer) Do
Buffer[I] := Random(256);
End;
Begin
FS := TFileStream.Create(FileName, fmOpenReadWrite Or fmShareExclusive);
Try
For I := 1 To 3 Do
Begin
RandomizeBuffer;
Max := FS.Size;
FS.Position := 0;
While Max > 0 Do
Begin
If Max > SizeOf(Buffer) Then
n := SizeOf(Buffer)
Else
n := Max;
FS.Write(Buffer, n);
Max := Max - n;
End;
FlushFileBuffers(FS.Handle);
End;
Finally
FS.Free;
End;
Result := DeleteFile(FileName);
End;
您的方法对付注入型DLL文件行不通。只能删除一般文件。
To:ly_liuyang
您有相关的代码吗?留下联系方式吧。实践通过的话,支付RMB。欢迎其他高手指教。
对于Ring3程序和部分Ring0,直接构建IRP发删除请求到FSD驱动,并让欺骗FSD,让它认为你的文件没别人使用即可达到目的通常用IAT Hook NTFS/FAT文件系统上面的MmFlushImageSection即可实现欺骗
考虑到简化代码,MmFlushImageSection其实就是判断2个指针是否为空而已,于是可以简单的置空即可pSectionObjectPointer = fileObject->SectionObjectPointer;
pSectionObjectPointer->ImageSectionObject = 0;
pSectionObjectPointer->DataSectionObject = 0;虽然这样用不符合标准流程,但2000/XP/2003都是这么判断的,估计Vista也一样,用用无妨的另外删除的文件只能是普通属性FILE_ATTRIBUTE_NORMAL,只读之类的是删除不了的,所以,处理之前发IRP强制去除其他属性,那就更好啦做底层的只能用DDK的C,虽然有DDDK(Delphi DDK)没实战用过,估计可以做做这类简单事情的