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)相关推荐
- Visual Studio 2013开发 mini-filter driver step by step (1) - 创建 mini filter driver 工程
Visual Studio 2013终于集成了Driver的开发和调试功能了,这是大多数开发者期盼已久的大事了,本文以mini filter driver的开发为例. 想当初,要创建一个mini fi ...
- Visual Studio 2013开发 mini-filter driver step by step (3) - 查看运行结果
除了调试driver之外,诊断driver问题还有很重要的一种方式就是查看driver的log,当然也可以像应用层程序一样,输出log到文件中,但是输出log到文件中,会影响系统性能,因为log信息一 ...
- Visual Studio 2013开发 mini-filter driver step by step (11) driver 签名
在windows vista以后的版本,driver必须签名才能正常运行,如果要想没有签名的driver也能正常运行在这些系统上面,需要在系统启动的时候按F8,选择 Disable Driver ...
- Visual Studio 2013开发 mini-filter driver step by step (2) - 编译,部署,运行
编译driver 一个基本的mini filter项目创建好了以后,就可以编译,部署和运行了,在部署之前,我们要先确定在什么样的系统上运行,我有一台windows 2008 r2拟机,所以我的运行的目 ...
- Visual Studio 2013开发 mini-filter driver step by step 获取文件读写内容(6)
由于后面的内容跟Visual Studio已经没有太大关系,故文章标题去掉Visual Studio前缀. 今天刚好在CSDN上读到一篇文章<程序员都要有八块腹肌>,所以要练好身体啊!其实 ...
- Visual Studio 2013开发 mini-filter driver step by step (4) - 获取文件名
mini filter驱动一般用于杀毒,加密,数据实时备份等.无论是杀毒软件,加密软件还是备份软件等都是基于这样一个基本事实,就是监控文件内容以及文件内容的变化,怎样监控检测文件内容?就是监控文件的读 ...
- 使用Visual Studio 2013开发Python Django
熟悉了C++或C#的童鞋可能对Visual Studio编辑器比较熟悉,最近在学python,就想使用VS当做IDE,经过几番调试,感觉还是不错的 1.安装Python Tools for Visua ...
- Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
应用层与内核通讯是通过通讯端口来进行的,下面的这个API就是内核用来创建一个内核端口的. NTSTATUS FltCreateCommunicationPort(_In_ PFLT_FILTER Fi ...
- Visual Studio 2013开发 mini-filter driver step by step (5) - 读写文件
在kernel中读写文件要比在应用层麻烦一些,但是基本思路大体上还是一致的. 在内核中,也有很多相关的读写文件的API,本文只对 FltCreateFileEx FltReadFile FltWrit ...
最新文章
- [YTU]_2635(P4 游戏中的Human角色)
- Leetcode215数组中第k大的数-最小堆
- 【渝粤题库】国家开放大学2021春2143西方经济学题目
- node作为java中间间_node作为中间服务层如何发送请求(发送请求的实现方法详解)...
- linux release 版本的区别,编译debug版本和编译release版本的区别
- 首发骁龙8 Gen1!联想陈劲:摩托罗拉edge X将给行业扔一颗大炸弹
- Javaworkers团队第五周项目总结
- 佳能g3800故障灯说明书_虎林2020定制FW6117移动工作灯
- 8个Java实践项目:平均半个小时就可干完~
- 关系抽取--CASREL
- 平面设计专业介绍,平面设计专业有哪些课程
- java 保留原始顺序的有序map的新思路:List<Map.Entry<?,?>>
- java 文章目录递归(一级标题,二级标题)
- 一杯咖啡带你读懂状态机
- Viojs P1484 ISBN号码
- Ubuntu16.04 ftp服务器安装+配置
- Mac创建txt文件的两种方法
- #5 最长回文子串(中等)
- 9张思维导图学懂Javascript
- 是的,诺基亚还“活着”,并推出了新款平板电脑!
热门文章
- 提升ListView的运行效率
- linux系统硬盘坏道,如何在 Linux 系统下检测硬盘上的坏道和坏块
- python魔法方法好难_一篇干货好文,轻松掌握python魔法方法
- C++字符串详解(三) 字符串的查找
- 金融量化alpha和beta值的意义
- Leetcode 104.二叉树的最大深度 (每日一题 20210625)
- tensorflow就该这么学--4(识别手写数字)
- 258. Add Digits
- 机器学习笔记:logistic regression
- UBUNTU衍生版制作,系统的封装