首页
社区
课程
招聘
[讨论]大家说说,堆栈空间分配多少合适?
发表于: 2008-5-17 18:14 4378

[讨论]大家说说,堆栈空间分配多少合适?

2008-5-17 18:14
4378
还是这两天贴的那个代码:
                                                sub esp,0xc
			mov byte ptr[ebp-0Ch],4Dh
			mov byte ptr[ebp-0Bh],53h
			mov byte ptr[ebp-0Ah],56h
			mov byte ptr[ebp-09h],43h
			mov byte ptr[ebp-08h],52h
			mov byte ptr[ebp-07h],54h
			mov byte ptr[ebp-06h],2Eh
			mov byte ptr[ebp-05h],44h
			mov byte ptr[ebp-04h],4Ch
			mov byte ptr[ebp-03h],4Ch
			mov byte ptr[ebp-02h],0h

这里如果我修改成
                                                sub esp,0xc
			mov byte ptr[ebp-0Bh],4Dh
			mov byte ptr[ebp-0Ah],53h
			mov byte ptr[ebp-09h],56h
			mov byte ptr[ebp-08h],43h
			mov byte ptr[ebp-07h],52h
			mov byte ptr[ebp-06h],54h
			mov byte ptr[ebp-05h],2Eh
			mov byte ptr[ebp-04h],44h
			mov byte ptr[ebp-03h],4Ch
			mov byte ptr[ebp-02h],4Ch
			mov byte ptr[ebp-01h],0h

这样没有错误,只不过把数据的ebp作了个调整,虽然是占用了0xb个字节,但实际上是分配了0xc个字节,但是如果这个时候我把sub esp,0xc修改成0xb的话(实际占用字节的大小),结果就会出一个异常错误。
也就是分配的空间必须大于实际占用的字节大小,我也看过很多程序,里面都是把空间分配的很大,至少比实际需要的要多,可是这个究竟分配多少才算合适呢?
小花再此求教……

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
忽然想起了意见事情,可能这个例子据的不恰当,不应该用奇数(0xb)。
反正我就是这么个意思哈
2008-5-17 18:45
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
你问题很多...不过希望自己多想想,多实践.....你改了程序之后应该是把不该覆盖的的地方覆盖了,过不了栈溢出检查

例如一个byte数组

byte a[10]

实际就是分配10个字节(从a[0]开始),如果修改a[10],就会出异常

多出来的估计是出于防止溢出考虑的
2008-5-17 19:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=小花;454617]还是这两天贴的那个代码:

                                                sub esp,0xc
                        mov byte ptr[ebp-0Ch],4Dh
                        mov byte ptr[ebp-0Bh],53h
                        mov byte p...[/QUOTE]
顶下~~~~~~~~~~~~~~~
2008-5-17 19:47
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
欣然接受你的意见
ps:其实再每次提问之前我都是考虑了很久而且经过实践后才发的。因为我深知通过自己解决的困难,才能记得的更牢,理解的更深刻。
2008-5-17 19:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=小花;454617]还是这两天贴的那个代码:

                                                sub esp,0xc
                        mov byte ptr[ebp-0Ch],4Dh
                        mov byte ptr[ebp-0Bh],53h
                        mov byte p...[/QUOTE]
让我想想看~~~~~~~~
2008-5-17 20:09
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
#include <windows.h>

int main()
{

  __asm
  {
    push ebp
      mov ebp,esp
      xor eax,eax
      //push eax
      //push eax
      //push eax
      sub esp,0xc
      
      mov byte ptr[ebp-0Ch],4Dh
      mov byte ptr[ebp-0Bh],53h
      mov byte ptr[ebp-0Ah],56h
      mov byte ptr[ebp-09h],43h
      mov byte ptr[ebp-08h],52h
      mov byte ptr[ebp-07h],54h
      mov byte ptr[ebp-06h],2Eh
      mov byte ptr[ebp-05h],44h
      mov byte ptr[ebp-04h],4Ch
      mov byte ptr[ebp-03h],4Ch
      lea eax,[ebp-0Ch]
      push eax
      mov edx,0x77E1850D //LoadLibrary sp3
      call edx
      //call ds:LoadLibraryA
      //然后是开一个dos窗口:
      push ebp 
      mov ebp, esp 
      sub esp, 0x2C 
      mov eax, 0x6D6D6F63 
      mov dword ptr [ebp-0x0C], eax
      mov eax, 0x2E646E61 
      mov dword ptr [ebp-0x8], eax
      mov eax, 0x226D6F63 
      mov dword ptr [ebp-0x4], eax
      xor edx, edx 
      mov byte ptr [ebp-0x1], dl 
      lea eax, dword ptr [ebp-0xC]
      push eax 
      mov eax, 0x77b88c10 //system  sp3
      call eax

  }

  

  return 0;
}

2008-5-17 20:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是因为堆栈是4字节对齐!从4的倍数地址访问速度快!
2008-5-26 12:52
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
9
你 push eax 全拿掉
你起码放个 mov byte ptr[ebp-02h],00h 吧.
2008-5-26 13:14
0
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
干嘛这样搞呢?
编译器干的活喜欢自己动手干?

想让堆栈不齐还不简单?自己压
dec esp
mov byte ptr [esp],01

构造一个字符串也不用这么麻烦吧
lea eax,lpChar
jmp @f     
  lpChar db 'xxx'
@f:
一个短跳才2个字节,你这样往堆栈写东西。。。^%#^%#
2008-5-26 19:16
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
11
楼主玩这个玩很多天了
印像中一星期前就在研究了.
2008-5-27 00:47
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
嗯,我刚才还想呢……怎么又顶上来了。老贴了
2008-5-27 09:04
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
13
可否偷偷透露一下.
你倒底想研究什么?
节省空间? 档案变小?
f-.- 好像都不是.. 说一下啦..
2008-5-27 09:59
0
游客
登录 | 注册 方可回帖
返回
//