1、打开某个进程的内存空间,读出它那块内存中的内容(可以实现)2、已知PE文件头信息,得到代码段、数据段、资源段、引入、引出表等的偏移量和大小等信息
并根据相关信息对内存数据进行还原。(这个可以)
进程的内存空间中可能有动态分配的数据,怎么区别?该进程可能含有多个线程,如何处理?3、PE文件被装载器映射入内存时,PE头也被加载吗?加载在那里?
   如果不被加载入进程的内存空间而是仅供PE装载器参考,那这个问题可能实现吗?如果以上问题可能实现,真正DUMP出来的东西可能很大(估计它动态加载的东西应该也必须被包含)
PE头应该也要重新写。另外如果想从非本地计算机上使用是否必须让远程计算机运行一个“客户端”
将的到的结果发送到指定“服务器端”?

解决方案 »

  1.   

    PE头也会被加载,一般情况下就是0x400000,你可以用Softice查看!我想你dump的目的是为了脱壳,其实你要这样想,壳是不会改变exe文件的布局的,因为编译好的exe文件对数据段包括引入表等数据的引用是定死的,壳最多把这些外部数据加密,运行时动态解压,很少会改变exe本身对这些资源的调用!所以脱壳的最主要任务是找到入口点!然后把代码段,数据段等section的信息恢复,包括被加密的引入表(这个很难!),才会勉强dump,不过这个都是入门而已,现在的壳都是很变态的,没有一定功力根本脱不了!建议你去看雪转转,可能会有收获!
      

  2.   

    PE文件被装载器映射入内存时,PE头也被加载吗?加载在那里?
       如果不被加载入进程的内存空间而是仅供PE装载器参考,那这个问题可能实现吗?PE头是要被加载得,这是个基准,还要判断是否是一个合法的PE文件
      

  3.   

    谢谢1楼
    我DUMP进程不只是为了脱壳,我是想试试进程是否能被较完整的反向成文件。顺便看看映射进程时是否会改变EXE本身结构的顺序。