阅读:1122回复:4
rayyang2000 请进来一下
请问在虚拟磁盘的那个vfat重入的问题上!你能够详细说一下你认为的解决方法吗?怎么获得fs_openfile的句柄,并且怎么构造一个ifsreq请求
在那本书里面我看到的是以下的代码 。。。。。 ppPrevHook = IFSMgr_InstallFileSystemApiHook( FileHook ); 。。。。。 int __cdecl FileHook( pIFSFunc pfn, int fn, int drv, int res, int cp, pioreq pir ) { 。。。。。。。。。。。 ifsreq ifs; pIFSFunc pEnumHandle; ParsedPath* pUniPPath; char* pszName; pszName = IFSMgr_GetHeap( MAX_PATH ); if ( pszName != NULL ) { pUniPPath = IFSMgr_GetHeap( 1024 ); if ( pUniPPath != NULL ) { memcpy( &ifs, pir, sizeof( ifsreq ) ); 。。。。。。。。。。。 } |
|
沙发#
发布于:2002-12-16 12:55
ifs.ifs_ir.ir_flags = ENUMH_GETFILENAME;
ifs.ifs_ir.ir_ppath = pUniPPath; pEnumHandle = ifs.ifs_pfh->fh_hf.hf_misc->hm_func[HM_ENUMHANDLE]; //// // // If you don\'t want any downstream hookers to see this call // then you can call the FSD directly, like this ... #if 0 (*pEnumHandle)((pioreq)&ifs); #endif |
|
板凳#
发布于:2002-12-16 16:03
我看了pgpdisk 9x driver的代码
它有几种读取映像文件的方法,其中一种是调int 21(通过Exec_VxD_Int),不知道这条路能不能走通? 我准备试试 |
|
|
地板#
发布于:2002-12-17 09:18
唉!斑竹怎么不来这里看一下啊!
|
|
地下室#
发布于:2002-12-19 01:15
唉!斑竹怎么不来这里看一下啊! 我不是这里的斑竹 :) 要想截获fsd vfn table,要hook IFSMgr_NetFunction。每个drive在mount的时候,ifsmgr都会调用这个函数。但是,有的drive会有多次的通知。 |
|
|