use*_*973 3 memory windows portable-executable sections
所以我过去几天一直在重新研究PE格式,我还有几个问题
数据部分是否已映射到进程的内存中,或程序是否从磁盘读取它?
如果确实将其映射到其内存中,那么该进程如何获取该部分的偏移量?(和其他部分)
有没有办法获取已经映射到内存中的进程的入口点,而不触及磁盘上的文件?
数据部分是否映射到进程的内存中
是.这不太可能存活很长时间,该程序很容易写入该部分.这会触发写入时复制页面副本,该页面副本将获取由页面文件而不是PE文件支持的页面.
该过程怎样才能获得该部分的偏移量?
链接器已经计算了该部分中变量的偏移量.它可能是重定位的,对于具有笨拙的基址的DLL来说是常见的,这些DLL在加载DLL时已经在使用.在这种情况下,加载器使用PE文件中的重定位表来修补代码中的地址.包含此类修补代码的页面获得与数据部分相同的处理,它们不再由PE文件支持,并且不能在进程之间共享.
有没有办法获得一个过程的入口点
在整个 PE文件被映射到内存,包括它的头.因此,您无需读取文件即可从内存中读取IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint.请记住,如果您为另一个进程执行此操作会很痛苦,因为您无法直接访问其虚拟地址空间.你必须使用ReadProcessMemory(),这是相当少的快乐,不可能比读取文件更快.该文件很可能存在于文件系统缓存中.地址空间布局随机化功能很容易让您头疼,旨在使这些事情变得困难.
归档时间: |
|
查看次数: |
4038 次 |
最近记录: |