-
-
[分享]避免壳申请的区段低于镜像基址的一个方法
-
发表于:
2007-8-1 13:18
6951
-
避免壳申请的区段低于镜像基址的一个方法
有些壳申请的区域低于镜像基址,可以在运行前,先人为手动把镜像基址前的内存申请出来,这样壳就只能申请镜像基址以后的内存了。
下面是代码示例,本例中镜像基址为00400000,不同基址可修改相应数据实现。当然写一个脚本的话就比较方便了。
00409C15 9C pushfd
00409C16 60 pushad ; 上面这两句保存现场
00409C17 6A 04 push 4
00409C19 68 00100000 push 1000
00409C1E 68 00100000 push 1000
00409C23 6A 00 push 0
00409C25 E8 27FE3F7C call kernel32.VirtualAlloc ; 这5句是申请内存
00409C2A 3D 00003F00 cmp eax, 3F0000 ; 比较有没有申请到程序的镜像基址处
00409C2F ^ 75 E6 jnz short 00409C17 ; 没有就跳回去继续申请
00409C31 61 popad
00409C32 9D popfd ; 恢复现场
00409C33 90 nop ; 这里下个断点
00409C34 90 nop
中断后,清除这些代码,把eip回到原来的位置,就可以了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!