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

先看看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)相关推荐

  1. Visual Studio 2013开发 mini-filter driver step by step (1) - 创建 mini filter driver 工程

    Visual Studio 2013终于集成了Driver的开发和调试功能了,这是大多数开发者期盼已久的大事了,本文以mini filter driver的开发为例. 想当初,要创建一个mini fi ...

  2. Visual Studio 2013开发 mini-filter driver step by step (3) - 查看运行结果

    除了调试driver之外,诊断driver问题还有很重要的一种方式就是查看driver的log,当然也可以像应用层程序一样,输出log到文件中,但是输出log到文件中,会影响系统性能,因为log信息一 ...

  3. Visual Studio 2013开发 mini-filter driver step by step (11) driver 签名

    在windows vista以后的版本,driver必须签名才能正常运行,如果要想没有签名的driver也能正常运行在这些系统上面,需要在系统启动的时候按F8,选择  Disable Driver ...

  4. Visual Studio 2013开发 mini-filter driver step by step (2) - 编译,部署,运行

    编译driver 一个基本的mini filter项目创建好了以后,就可以编译,部署和运行了,在部署之前,我们要先确定在什么样的系统上运行,我有一台windows 2008 r2拟机,所以我的运行的目 ...

  5. Visual Studio 2013开发 mini-filter driver step by step 获取文件读写内容(6)

    由于后面的内容跟Visual Studio已经没有太大关系,故文章标题去掉Visual Studio前缀. 今天刚好在CSDN上读到一篇文章<程序员都要有八块腹肌>,所以要练好身体啊!其实 ...

  6. Visual Studio 2013开发 mini-filter driver step by step (4) - 获取文件名

    mini filter驱动一般用于杀毒,加密,数据实时备份等.无论是杀毒软件,加密软件还是备份软件等都是基于这样一个基本事实,就是监控文件内容以及文件内容的变化,怎样监控检测文件内容?就是监控文件的读 ...

  7. 使用Visual Studio 2013开发Python Django

    熟悉了C++或C#的童鞋可能对Visual Studio编辑器比较熟悉,最近在学python,就想使用VS当做IDE,经过几番调试,感觉还是不错的 1.安装Python Tools for Visua ...

  8. Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)

    应用层与内核通讯是通过通讯端口来进行的,下面的这个API就是内核用来创建一个内核端口的. NTSTATUS FltCreateCommunicationPort(_In_ PFLT_FILTER Fi ...

  9. Visual Studio 2013开发 mini-filter driver step by step (5) - 读写文件

    在kernel中读写文件要比在应用层麻烦一些,但是基本思路大体上还是一致的. 在内核中,也有很多相关的读写文件的API,本文只对 FltCreateFileEx FltReadFile FltWrit ...

最新文章

  1. [YTU]_2635(P4 游戏中的Human角色)
  2. Leetcode215数组中第k大的数-最小堆
  3. 【渝粤题库】国家开放大学2021春2143西方经济学题目
  4. node作为java中间间_node作为中间服务层如何发送请求(发送请求的实现方法详解)...
  5. linux release 版本的区别,编译debug版本和编译release版本的区别
  6. 首发骁龙8 Gen1!联想陈劲:摩托罗拉edge X将给行业扔一颗大炸弹
  7. Javaworkers团队第五周项目总结
  8. 佳能g3800故障灯说明书_虎林2020定制FW6117移动工作灯
  9. 8个Java实践项目:平均半个小时就可干完~
  10. 关系抽取--CASREL
  11. 平面设计专业介绍,平面设计专业有哪些课程
  12. java 保留原始顺序的有序map的新思路:List<Map.Entry<?,?>>
  13. java 文章目录递归(一级标题,二级标题)
  14. 一杯咖啡带你读懂状态机
  15. Viojs P1484 ISBN号码
  16. Ubuntu16.04 ftp服务器安装+配置
  17. Mac创建txt文件的两种方法
  18. #5 最长回文子串(中等)
  19. 9张思维导图学懂Javascript
  20. 是的,诺基亚还“活着”,并推出了新款平板电脑!

热门文章

  1. 提升ListView的运行效率
  2. linux系统硬盘坏道,如何在 Linux 系统下检测硬盘上的坏道和坏块
  3. python魔法方法好难_一篇干货好文,轻松掌握python魔法方法
  4. C++字符串详解(三) 字符串的查找
  5. 金融量化alpha和beta值的意义
  6. Leetcode 104.二叉树的最大深度 (每日一题 20210625)
  7. tensorflow就该这么学--4(识别手写数字)
  8. 258. Add Digits
  9. 机器学习笔记:logistic regression
  10. UBUNTU衍生版制作,系统的封装