网站大量收购独家精品文档,联系QQ:2885784924

获取进程完整路径方法小结.pdf

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
获取进程完整路径方法小结

获取进程完整路径方法小结 By Anglekiss 2011 年 2 月 9 日星期三 最近在做一个主动防御项目,少不了要拦截进程创建.拦截进程创建的方法在这里就不多 说了,免得跑题(其实也就是各种 Hook 的运用).拦截到进程创建后,需要获得进程对应的可执 行文件完整路径, 因为只有进一步分析可执行文件,才能获得更多信息来判断该进程的好坏. 于是有了本文的产生. 很多人对于获取进程的完整路径可能不屑一顾. 以前写过的代码中确实也遇到过,利用 google 几分钟内,你会得到几个Api,例如:GetModuleFileNameEx,GetProcessImageFileName 等. 但对于 Ring3 层提供的 Api,Windows 内核层做了什么,又有多少人很明确的知道?杀毒软件与 病毒木马一直玩着猫和老鼠的游戏,病毒木马稍作手脚,Ring3 获取进程完整路径时就会失败. 只有我们知道这些Api 的本质,才能以不变应万变.下面将从 Windows 内核层分析这些Api 的 本质,并提供几种获取进程完整路径及防止别人获取进程完整路径的方法. 一. 进程内核数据结构中与路径信息相关位置 _EPROCESS-_SE_AUDIT_PROCESS_CREATION_INFO-_OBJECT_NAME_INF ORMATION 从 上 面 的 截 图 可 以 看 到 , 在 进 程 内 核 对 象 EPROCESS 偏 移 0x1f4 处 存 放 着 _SE_AUDIT_PROCESS_CREATION_INFO 结 构 的 指 针 , 该 指 针 处 又 存 放 着 _OBJECT_NAME_INFORMATION 结构的指针,而该结构中存放着该进程的 NT 式文件路径. _EPROCESS-_SECTION_OBJECT-_SEGMENT_OBJECT-_CONTROL_AREA- _FILE_OBJECT: 从上面的截图可以看到进程内核对象偏移 0x138 处存放着指向_SECTION_OBJECT 结构的 指针,而该结构的 0x14 处存放着_SEGMENT_OBJECT 结构指针,_SEGMENT_OBJECT 结构 偏移 0x0 处是_CONTROL_AREA 结构的指针,该结构偏移 0x24 处是_FILE_OBJECT 结构的 指针,利用该结构的_DEVICE_OBJECT,FileName 两个成员和 RtlVolumeDeviceToDosName 函 数可以获取进程文件的 DOS 完整路径 _PEB-_PEB_LDR_DATA-_LDR_DATA_TABLE_ENTRY: 可以看到_PEB 偏移 0xc 处是_PEB_LDR_DATA 数据结构 , 该结构偏移 0xc 处是 _LDR_DATA_TABLE_ENTRY 数据结构.但是需要注意的是,上面的成员获取必须在对应进 程的上下文. _PEB-_RTL_USER_PROCESS_PARAMETERS: 同样是_PEB 结构,偏移 0x10 处是_RTL_USER_PROCESS_PARAMETERS 结构.同样需要在 目标进程的上下文空间. 上面就是进程内核对象中存放路径的相关位置,当然也许还有其他地方,麻烦知道的大牛 告诉我,谢谢! 二. 微软提供的获取进程路径相关函数分析 1. GetProcessImageFileName 函数: DWORD GetProcessImageFileName( HANDLE hProcess ,//目标进程句柄 LPTSTR lpImageFileName ,//提供的空间 ,用于保存获取到的进程路径 DWORD nSize//空间大小 );//返回实际路径长度 上面的函数获取的进程可执行文件 NT 式完整路径. 从前面的分析中我们可以看到, _EPROCESS-_SE_AUDIT_PROCESS_CREATION_INFO-_OBJECT_NAME_INFORMATI ON 该处存放的就是 NT 式完整路径.我们来验证下: 0:000 uf PSAPI!GetProcessImageFileNameA PSAPI!GetProcessImageFileNameA: 76bc3dbd 8b

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档