欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Visual Studio 2013开发 mini-filter driver step by step 获取可执行文件名称 - 实现process monitor的一个功能 (10)

发布时间:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Visual Studio 2013开发 mini-filter driver step by step 获取可执行文件名称 - 实现process monitor的一个功能 (10) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

国庆就要结束了,遗憾一下:)

先看看process monitor的样子

他的功能就是监控哪些应用程序执行了什么操作,比如打开了哪些文件,读取了哪些文件等。

今天在使用一张小学英语光盘的时候,发现安装软件后,必须要光盘才能运行,很是麻烦,而且里面的mp3文件也不知道在哪里存放,把隐藏文件,系统文件等显示了,仍然不知道那些mp3存放在光盘的什么地方了,没办法,又要想拷贝他们到手机上,好辅导孩子的学习,不能每次都把光盘放到电脑上,好麻烦。

所以启动了process monitor,很快就知道了mp3的藏身之处,就在光盘的一个名字叫assets的目录下面。轻松拷贝下来:)

今天要讨论的就是怎么获得应用程序的名字,从内核态很容易知道哪些文件被操作了,前面的blog中已经提到了,这里不再赘述。

要获得应用程序的名字,有很多种方法,网上也有很多讨论,主要的方法就是利用EPROCESS结构,用类似hack的方法来查找文件名,基本思路是在Driver_Entry中获取到system进程的名字,然后记录下进程名的偏移量,然后再在需要的时候使用这个偏移量来获得进程名。

这个方法确实可行,但是也有一些问题,不同的系统EPROCESS可能会有所不同,会有不兼容的问题。

从Windows XP以后,ntoskrnl.exe提供了一个未公开API,叫PsGetProcessImageFileName,该函数的原型为:

char* PsGetProcessImageFileName(PEPROCESS p);

虽然为公开文档,但是可以直接拿来使用,使用的时候当然也很简单。

需要先申明一下:

extern

char* PsGetProcessImageFileName(PEPROCESS p);

然后就可以使用了:

PsGetProcessImageFileName(PsGetCurrentProcess());

注意,只能返回进程名,而不会返回全路径,正如process monitor一样。



总结

以上是生活随笔为你收集整理的Visual Studio 2013开发 mini-filter driver step by step 获取可执行文件名称 - 实现process monitor的一个功能 (10)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。