能力值:
( LV6,RANK:87 )
|
-
-
2 楼
我也借楼问问, 怎么在IRP_MJ_CREATE的Pre函数里获取到当前操作的对象是个”文件“还是”文件夹“?
|
能力值:
( LV6,RANK:89 )
|
-
-
3 楼
PEPROCESS objCurProcess = IoThreadToProcess( Data->Thread );
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
LexSafe
PEPROCESS objCurProcess = IoThreadToProcess( Data->Thread );
测试好用,感谢大佬指点~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
Lixinist
我也借楼问问,
怎么在IRP_MJ_CREATE的Pre函数里获取到当前操作的对象是个”文件“还是”文件夹“?
FltObjects->FileObject->FileName 拿到文件对象后,可以判断最后是不是" \ ”结尾
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
Lixinist
我也借楼问问,
怎么在IRP_MJ_CREATE的Pre函数里获取到当前操作的对象是个”文件“还是”文件夹“?
FltIsDirectory
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
PFLT_CALLBACK_DATA 中不是有processobject么 用 PsGetProcessId 就能获取PID了啊 用PsGetProcessImageFileName就能获取process的全路径了 FltGetFileNameInformation 可以拿到文件信息,这些东西google能查到 自己搜索下吧
最后于 2022-8-23 16:00
被wx_0xC05StackOver编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
FltGetFileNameInformation FltGetRequestorProcess这两个应该更合理一些
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
wx_0xC05StackOver
PFLT_CALLBACK_DATA 中不是有processobject么 用 PsGetProcessId  ...
PsGetProcessImageFileName得到的只有进程的文件名,不包括前面的路径部分,需求是获取进程全路径。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
MSGG05
FltGetFileNameInformation FltGetRequestorProcess这两个应该更合理一些
获取当前文件全路径已经实现了:IoVolumeDeviceToDosName获取卷标,FltObjects->FileObject->FileName获取路径,然后拼接在一起就是文件全路径。 获取进程全路径暂时还没搞定,PEPROCESS 能直接得到的只有进程文件名或者PID,网上有些方案是直接读PEB的偏移地址获取全路径,代码比较简洁但是是硬编码的,兼容性不太好。其他的方案都是长篇大论啰里啰唆,难道就没有一个简单点方法获取进程全路径吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
ZwQueryInformationProcess 参数 ProcessImageFileName
最后于 2022-8-23 16:44
被MSGG05编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
MSGG05
ZwQueryInformationProcess 参数 ProcessImageFileName
ZwQueryInformationProcess —— 这个是在应用层调用的吧?现在是在驱动层,怎么调用ZwQueryInformationProcess呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
碧水秋沙
ZwQueryInformationProcess —— 这个是在应用层调用的吧?现在是在驱动层,怎么调用ZwQueryInformationProcess呢?
驱动可以用的,用MmGetSystemRoutineAddress获取函数地址就可以调用了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
碧水秋沙
ZwQueryInformationProcess —— 这个是在应用层调用的吧?现在是在驱动层,怎么调用ZwQueryInformationProcess呢?
https://oomake.com/question/857399 可以参照这个下面回复中的代码
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
MSGG05
https://oomake.com/question/857399 可以参照这个下面回复中的代码
谢谢大佬,经过一番努力已经抓到了进程名路径了,但是ZwQueryInformationProcess查出来的路径是设备名,\Device\HarddiskVolume3\Windows\explorer.exe这种形式,怎么把它转成盘符呢?网上的方法都是遍历C盘到Z盘,把DOS路径转成设备路径然后逐一对比,这方法太傻了吧,而且兼容性堪忧,如果盘符分区大于26个可能会有异常,有没有啥API函数可以一步到位或者尽可能简洁点把设备路径转换成DOS路径?
|
能力值:
( LV9,RANK:280 )
|
-
-
16 楼
碧水秋沙
谢谢大佬,经过一番努力已经抓到了进程名路径了,但是ZwQueryInformationProcess查出来的路径是设备名,\Device\HarddiskVolume3\Windows\explore ...
PsReferenceProcessFilePointer+IoQueryFileDosDeviceName 没PsReferenceProcessFilePointer的系统自己想办法
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
hzqst
PsReferenceProcessFilePointer+IoQueryFileDosDeviceName
没PsReferenceProcessFilePointer的系统自己想办法
谢谢大牛,这个之前在CSDN上看到了,但是调试代码一调用PsReferenceProcessFilePointer就蓝屏,弄了半天不知道哪里有问题,所以后来放弃了。 https://my.oschina.net/simpower91/blog/4263121 copy了几个又臭又长的函数搞定了,但是实在看不顺眼啊。。。
|
能力值:
( LV6,RANK:87 )
|
-
-
18 楼
Thead
FltIsDirectory
这个函数我记得在Pre里是用不了的,只能在Post函数里用
|
能力值:
( LV6,RANK:87 )
|
-
-
19 楼
碧水秋沙
FltObjects->FileObject->FileName 拿到文件对象后,可以判断最后是不是" \ ”结尾
这个方法我记得在某些情况下不灵。有可能文件对象末尾是“文件夹名“而不是” \ ”
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
Lixinist
这个函数我记得在Pre里是用不了的,只能在Post函数里用
我查了一下文档,确实是不行的,不过调用fltcreatefile打开文件再查一次文件属性,就可以了
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
没用.从N年前疼熏就用流氓驱动给你反复无限循环挂钩子, 单纯百姓信它鬼话说只是保护自己进程, 其实更重要的是想上传啥就上传啥, 你只要钩子覆盖不过它, 就别想知道它干了什么肮脏事
PS:忘了最反智和愚民的一点, 那个肮脏驱动开机强制自启, 即使你不用它软件它也操蛋地开机自启, 全系统底层挂红色钩子, 愚木脑袋也能看出它不可能只是为了保护软件
最后于 2022-8-28 12:18
被PEDIY编辑
,原因:
|
|
|