浅谈脱壳中的Dump技术5
本帖最后由 whypro 于 2010-5-27 17:33 编辑得要保存的文件名,默认的是dumped.exe。接着,使用前面在获得imageofsize的同时已经用GlobalAlloc函数申请了同样大小的堆空间,把目标进程的数据读到这个空间里面。这里面就有一个空间大小的问题,如果进程过大,我怀疑会申请失败。在这里还有尤其的注意一个地方,就是我们在申请空间的时候用了sizeoffile而不是sizeofimage,这是因为,有的时候sizeofimage的大小并不是一个文件对齐度的大小,而为了让他对齐,我使用下面的算法。
代码:
if(!(sizeofimage%0x1000)) //如果是文件对齐度的整数倍的时候就不处理
sizeoffile=sizeofimage;
else
sizeoffile=(sizeofimage/0x1000+1)*0x1000; //如果不是就增加一个文件对齐度
这样就能保证,imageofsize转化为一个具有文件对齐度的数值。
最后,是使用BOOL CreateDumpFile(HWND hDlg,LPCTSTR Dump_Name,HGLOBAL hMem);这个函数,这个函数的作用是在磁盘中申请一个文件,把从刚刚读到内存空间的数据又全部的写到磁盘上,所以就用了两个函数CreateFile和WriteFile。
三.试验
写好了程序就如下图一样
下面用他来实战使用一下吧
运行用upx压缩过的win98的notepad
让我把他在oep处dump下来
嘿嘿,dump下来才发现,图表都没有了。呵呵,这是因为我们没有把相对虚拟地址(RVA) 我有点菜 没有怎么看明白 /:good
高人,收我做徒弟吧
页:
[1]