auly
驱动牛犊
驱动牛犊
  • 注册日期2005-11-19
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望43点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1352回复:1

要hook一个file. 不能改动数据。 只能监视所做的操作.要如何办?[

楼主#
更多 发布于:2011-06-01 12:36
比如要Hook 一个 C:\a.txt; 拦截读写。 在 ntcreatefile里。 判断要打开的文件是不是 "C:\a.txt". 是就存下这个句柄。
在ntwritefile 和 ntreadfile 看是不是操作这个句柄,是就加上自己的处理。 不能改动数据。 只能监视做了什么。
/**
 * 根据文件句柄获取文件 DOS 全路径
 */
// BOOL ApiHookFsGetFilenameByHandle( IN HANDLE hFileHandle, OUT PCHAR pszFilename, IN USHORT uSize )
// {
// NTSTATUS ntStatus;
// BOOL bRet = FALSE;
// PWCHAR pBuffer;
// PFILE_OBJECT pstFileObject;
// POBJECT_NAME_INFORMATION pstObjectNameInfo;
// if ( NULL == hFileHandle )
// {
// return FALSE;
// }
//
// ntStatus = ObReferenceObjectByHandle( hFileHandle, FILE_READ_DATA, *IoFileObjectType, KernelMode, (void **)&pstFileObject, NULL );
// if ( NT_SUCCESS( ntStatus ) )
// {
// ntStatus = IoQueryFileDosDeviceName( pstFileObject, &pstObjectNameInfo );
// if ( NT_SUCCESS( ntStatus ) )
// {
// // ntStatus = drvfunc_w2a( pstObjectNameInfo->Name.Buffer, pszFilename, uSize );
// if ( NT_SUCCESS( ntStatus ) )
// {
// bRet = TRUE;
// }
// }
// }
// return bRet;
// }

drvfunc_w2a 要引用什么头文件!
wxj120bw
驱动小牛
驱动小牛
  • 注册日期2008-06-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分109分
  • 威望1014点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-06-02 22:25
根据win32 api函数命名规则 应该不是win32 api函数里的 可能是第三方写的 调用内核驱动实现根据参数获取文件名。
游客

返回顶部