您的当前位置:首页正文

关于ark取得进程的镜像文件路径

2024-11-10 来源:个人技术集锦

最近看到一个trojan把自己拷到回收站里隐藏,然后发现我两万年前写的ark取得的进程路径还是原路径。。。

突然想起来很久以前看到某群的讨论



 拿破伦19:22:03

拿破伦19:22:33

KKindOf 19:23:05

丫的,这是面试题吧

DRL不爱天使 19:23:06

DRL不爱天使 19:23:32

你说的是Win7么

拿破伦 19:23:43

恩啊

DRL不爱天使 19:23:59

XP就不会

拿破伦 19:24:16

DRL不爱天使 19:24:50

7的文件管理很优越

拿破伦 19:24:53

为啥win7可以了

拿破伦 19:25:06

这个能用来干坏事不

拿破伦 19:25:16

移动一个被占用的文件感觉。。。

DRL不爱天使 19:25:36

不知道 我是好人

DRL不爱天使 19:25:40

拿破伦 19:26:30

是啊,移动不会提示被占用。。。这个没想通

KKindOf 19:27:00

干啥,如果独占的就不能移动了

拿破伦 19:27:28

这个是程序打开,不知道怎么设置独占啊

KKindOf 19:35:10 

你就是说运行了后,然后就移动,这样别人扫描进程列表就扫不出正确的路径? 

拿破伦 19:35:21 

嗯 

宁妖01 19:35:34 

额 

拿破伦 19:35:35 

启动是的路径不对了 

=======================================================================================================

其实xp和win7下都是可以的,已经跑起来的进程,他的可执行文件只要在当前盘符下,随便移动。移动之后任务管理器可能会得不到进程已经变更的可执行文件名。



进程的文件名更改之后 eprocess的UCHAR ImageFileName[16];不会更新。SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo;也不会主动更新

 

网上比较多的代码是找 eprocess → SectionObject. _SEGMENT_OBJECT →_SEGMENT→_CONTROL_AREA→_FILE_OBJECT

 

然后从 _FILE_OBJECT的filename结合RtlVolumeDeviceToDosName去取路径

 

一般情况下是ok的。但当进程运行起来之后,如果对镜像文件重命名,这时候再从_FILE_OBJECT的filename去取路径就只有原路径了

 

得到更改后路径的方法是得到FILE_OBJECT之后去调ObQueryNameString,(也可以自己实现ObQueryNameString,直接发irp)

 

详见NtQueryInformationProcess的实现


Top