Win7 x64 删除文件调用什么api
Win 7 x64系统中删除文件调用什么api,比如用键盘上的delete键删除文件时,调用的是什么api函数啊?
api hook Win?7?x64
[解决办法]
难道 DeleteFile 不行?
[解决办法]
你 64 位下钩子的方法跑通了没得问题了?
[解决办法]
推荐使用SoftSnoop软件查看另一个程序在完成某个功能时调用了哪些API。
[解决办法]
64 位程序和 32 位程序用的是不同的 dll
[解决办法]
Child-SP RetAddr Call Site
00000000`1193ebb8 000007fe`fe4bb573 kernel32!DeleteFileW
00000000`1193ebc0 000007fe`fe5a490d SHELL32!SHDeleteFilePidl+0x13
00000000`1193ebf0 000007fe`fe3bac5c SHELL32!CFSTransfer::RemoveItem+0x159
00000000`1193ec70 000007fe`fe40d17a SHELL32!CRemoveOperation::Do+0x46
00000000`1193ecb0 000007fe`fe40db25 SHELL32!CCopyWorkItem::_DoOperation+0x42
00000000`1193ed20 000007fe`fe40e566 SHELL32!CCopyWorkItem::_SetupAndPerformOp+0x317
00000000`1193f000 000007fe`fe40e303 SHELL32!CCopyWorkItem::ProcessWorkItem+0x28e
00000000`1193f330 000007fe`fe40d576 SHELL32!CRecursiveFolderOperation::Do+0x30c
00000000`1193f3d0 000007fe`fe40ec77 SHELL32!CFileOperation::_EnumRootDo+0x24d
00000000`1193f490 000007fe`fe623740 SHELL32!CFileOperation::PrepareAndDoOperations+0x320
00000000`1193f580 000007fe`fe5e519e SHELL32!CFileOperation::PerformOperations+0x1e0
00000000`1193f5e0 000007fe`fe5f1466 SHELL32!DeleteItemsInDataObject+0xee
00000000`1193f660 000007fe`ff9dc71e SHELL32!DeleteItemsThreadProc+0x6a
00000000`1193f6b0 00000000`7763652d SHLWAPI!WrapperThreadProc+0x19b
00000000`1193f7b0 00000000`7776c521 kernel32!BaseThreadInitThunk+0xd
00000000`1193f7e0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
我在 64 位下验证过了, explorer 在直接按 DELETE 把文件放入回收站是不会调用 DeleteFile 的, 按 Shift + DELETE 直接删除文件, 会调用 DeleteFileW, 调用堆栈为:
Child-SP RetAddr Call Site
00000000`1193ebb8 000007fe`fe4bb573 kernel32!DeleteFileW
00000000`1193ebc0 000007fe`fe5a490d SHELL32!SHDeleteFilePidl+0x13
00000000`1193ebf0 000007fe`fe3bac5c SHELL32!CFSTransfer::RemoveItem+0x159
00000000`1193ec70 000007fe`fe40d17a SHELL32!CRemoveOperation::Do+0x46
00000000`1193ecb0 000007fe`fe40db25 SHELL32!CCopyWorkItem::_DoOperation+0x42
00000000`1193ed20 000007fe`fe40e566 SHELL32!CCopyWorkItem::_SetupAndPerformOp+0x317
00000000`1193f000 000007fe`fe40e303 SHELL32!CCopyWorkItem::ProcessWorkItem+0x28e
00000000`1193f330 000007fe`fe40d576 SHELL32!CRecursiveFolderOperation::Do+0x30c
00000000`1193f3d0 000007fe`fe40ec77 SHELL32!CFileOperation::_EnumRootDo+0x24d
00000000`1193f490 000007fe`fe623740 SHELL32!CFileOperation::PrepareAndDoOperations+0x320
00000000`1193f580 000007fe`fe5e519e SHELL32!CFileOperation::PerformOperations+0x1e0
00000000`1193f5e0 000007fe`fe5f1466 SHELL32!DeleteItemsInDataObject+0xee
00000000`1193f660 000007fe`ff9dc71e SHELL32!DeleteItemsThreadProc+0x6a
00000000`1193f6b0 00000000`7763652d SHLWAPI!WrapperThreadProc+0x19b
00000000`1193f7b0 00000000`7776c521 kernel32!BaseThreadInitThunk+0xd
00000000`1193f7e0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
我在 64 位下验证过了, explorer 在直接按 DELETE 把文件放入回收站是不会调用 DeleteFile 的, 按 Shift + DELETE 直接删除文件, 会调用 DeleteFileW, 调用堆栈为:
Child-SP RetAddr Call Site
00000000`1193ebb8 000007fe`fe4bb573 kernel32!DeleteFileW
00000000`1193ebc0 000007fe`fe5a490d SHELL32!SHDeleteFilePidl+0x13
00000000`1193ebf0 000007fe`fe3bac5c SHELL32!CFSTransfer::RemoveItem+0x159
00000000`1193ec70 000007fe`fe40d17a SHELL32!CRemoveOperation::Do+0x46
00000000`1193ecb0 000007fe`fe40db25 SHELL32!CCopyWorkItem::_DoOperation+0x42
00000000`1193ed20 000007fe`fe40e566 SHELL32!CCopyWorkItem::_SetupAndPerformOp+0x317
00000000`1193f000 000007fe`fe40e303 SHELL32!CCopyWorkItem::ProcessWorkItem+0x28e
00000000`1193f330 000007fe`fe40d576 SHELL32!CRecursiveFolderOperation::Do+0x30c
00000000`1193f3d0 000007fe`fe40ec77 SHELL32!CFileOperation::_EnumRootDo+0x24d
00000000`1193f490 000007fe`fe623740 SHELL32!CFileOperation::PrepareAndDoOperations+0x320
00000000`1193f580 000007fe`fe5e519e SHELL32!CFileOperation::PerformOperations+0x1e0
00000000`1193f5e0 000007fe`fe5f1466 SHELL32!DeleteItemsInDataObject+0xee
00000000`1193f660 000007fe`ff9dc71e SHELL32!DeleteItemsThreadProc+0x6a
00000000`1193f6b0 00000000`7763652d SHLWAPI!WrapperThreadProc+0x19b
00000000`1193f7b0 00000000`7776c521 kernel32!BaseThreadInitThunk+0xd
00000000`1193f7e0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
请问这个是什么工具分析出来的。
有支持 Windows Server 2012 的版本吗?