阅读:2801回复:16
关于IFSMgr_InstallFileSystemApiHook钩子的难题
小弟在学习WIN98下文件删除保护程序时遇上难题,
我安装了IFSMgr_InstallFileSystemApiHook钩子, 但拦截时无法判断删除操作是哪个程序发出的, 尤其是SHELL32发出的?ir_pid属性我已测试,但 无法与前台程序找到的process ID相对应,请各 位大侠帮助! |
|
最新喜欢:lgqian...
|
沙发#
发布于:2001-11-29 16:17
兄弟,能否把你的例子给我一份? many thanks.
x2j4@sina.com |
|
板凳#
发布于:2001-11-29 17:57
能不能各我一份?
yoboo_yb@sohu.com 谢谢! |
|
|
地板#
发布于:2001-11-29 20:22
I want too.
thx sender@ms25.url.com.tw |
|
|
地下室#
发布于:2001-11-30 10:12
请问看过源码的大虾和其它大虾,能帮我解决这个难题吗?
(我的源码绝对没有删减) |
|
|
5楼#
发布于:2001-11-30 10:24
这种源吗有什么好看。
你去看看 filemon是如何 获得进程名的。 也可以自己写个函数获得进程ID, 请问看过源码的大虾和其它大虾,能帮我解决这个难题吗? |
|
|
6楼#
发布于:2001-11-30 11:31
小弟谢谢iamaf~1大哥赐教!!!
|
|
|
7楼#
发布于:2001-11-30 11:49
各位大哥,我找遍了各板快都找不到FILEMON的源代码,能email给我吗? pctools@163.net :(
|
|
|
8楼#
发布于:2001-11-30 14:44
源代码及分析->软件驱动->一个win9x和winNt.2k的文件监视器程序
|
|
9楼#
发布于:2001-11-30 18:29
十分感谢大家的帮助,我的难题已解决!
|
|
|
10楼#
发布于:2001-12-03 16:49
可以把原代码发给我吗?
我也写了个这样的程序,可是就是老出问题!!! 谁能帮我?程序在附件中!!! 谢谢!!! 发e-mail给我,重要重要!!! yuqiang0304@163.net 谢谢了!!! |
|
11楼#
发布于:2001-12-31 00:01
FileMon取得ProcessName的方法不怎么样,我现在做的project里用到了这个机能。
我的兄弟花了一天的时间才搞定,为了避免大家重复浪费时间,贡献给大家。 it depense on which you want to know. if you only want to knwo its \"ProcessName\" which shorten to 8 byts .you can do like following. (which can be found in FileMon made by SysInternals - www.sysinternals.com) CurProc = VWIN32_GetCurrentProcessHandle(); ring3proc = (PVOID) SelectorMapFlat( Get_Sys_VM_Handle(), (DWORD) (*(PDWORD) ((char *) CurProc + 0x38)) | 0x7, 0 ); if( ring3proc == (PVOID) -1 ) { strcpy( ProcessName, \"???\"); } else { // // copy out the process name (max 8 characters) // name = ((char *)ring3proc) + 0xF2; if( name[0] >= \'A\' && name[0] < \'z\' ) { memset(ProcessName,0x00,MAXPATHLEN); strcpy( ProcessName, name ); ProcessName[8] = 0x00; } else { strcpy( ProcessName, \"???\" ); } } if you want more detail which just like Win32 GetCommandLineA, you can get it by following way! memset(ProcessName, 0x00,MAXPATHLEN); // // Get the ring0 process pointer. // CurProc = VWIN32_GetCurrentProcessHandle(); pProcessBegin = ((UCHAR *)CurProc) + 0x40; /* Memory which hold PEDB Address */ pProcessBegin = (UCHAR *) *(DWORD *)pProcessBegin; /* Find PEDB Pointer */ pProcessBegin += 8; /*Shift 8 bytes */ pProcessBegin = (UCHAR *) *(DWORD *)pProcessBegin; /* Get Command Line Address */ strncpy(ProcessName, pProcessBegin, MAXPATHLEN -1); it has been confirmed in win98, win98se and winme . |
|
12楼#
发布于:2001-12-31 19:50
能得到 16bit程序 的进程名吗?? [Edited on 12/31/01 by iamaf~1] |
|
|
13楼#
发布于:2001-12-31 20:55
我记得行(记忆中MDM这样的16位程序也得到过)。不过不能百分之百确定。
近来进行XP升级,手边的机器把win9x给干掉了。 年初到公司确认一下,如果有误一定给大家个说法。 |
|
14楼#
发布于:2002-01-05 18:51
对于win16程序没有问题,对于16位console程序取不到.
其实想想就明白, 在16位console里,VWIN32_GetCurrentProcessHandle()不会返回任何有意义的结果. :( :( |
|
15楼#
发布于:2002-01-08 08:23
可以把原代码发给我吗?
我也写了个这样的程序,可是就是老出问题!!! 谁能帮我?程序在附件中!!! 谢谢!!! 发e-mail给我,重要重要!!! actionlxg@263.net 谢谢了!!! |
|
16楼#
发布于:2005-03-22 17:32
楼主怎么搞定的!
|
|