能力值:
( LV4,RANK:50 )
|
-
-
2 楼
函数我还沒弄个清楚..
只能顶了
|
能力值:
(RANK:350 )
|
-
-
3 楼
http://bbs.pediy.com/showthread.php?t=20366
注意:并不是所有程序加载时,ESP的值是0012FFC4,这个值是什么由操作系统决定,将SizeOfStackCOmmit改大ESP就会变,这是因为操作系统从这个页向上找一个足够大地方当作stack了(感谢forgot解释)。
|
能力值:
( LV13,RANK:380 )
|
-
-
4 楼
-------------------
注意:并不是所有程序加载时,ESP的值是0012FFC4,这个值是什么由操作系统决定,将SizeOfStackCOmmit改大ESP就会变,这是因为操作系统从这个页向上找一个足够大地方当作stack了(感谢forgot解释)。
-------------------
我曾仔细看过这段话,正是这句话引发了我探究的兴趣,这句话的错误在于错误理解了域SizeOfStackCommit, SizeOfStackReserve的作用,SizeOfStackCommit表示提交到物理内存的虚拟内存的大小,SizeOfStackReserve表示分配给当前程序的大小,注意是大小,不是地址。它们决定了程序初始化时堆栈空间的Commited内存的大小和Reserved内存的大小,但不是地址。
堆栈空间的顶端的值是否固定,我没有逆向windows,所以没有发言权,但不管堆栈空间的顶端是0x00130000,还是0x00120000,还是0x00110000,只要这里我提到的几个函数的源代码实现不变,最后几位的值就不会变:0x0012FFC4, 0x0011FFC4, 0x0010FFC4。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
不是所有的程序吧,00112ffc4 0012ffc0 0013ffc0我就碰到国
|
能力值:
( LV13,RANK:380 )
|
-
-
6 楼
操作系统的不同,源代码的实现有可能不同,这个值有可能不同。这个道理,我在文章中说明了。
2K, XP, Vista, Checked Version, Free Version都有可能不同。
我明白你们的意思,我写下来只是想弄清楚在堆栈上面到底存储了些什么东西。并不是探讨堆栈的顶端是否固定的问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我早就有这样的疑问了,到今天也弄不清楚。
|
能力值:
(RANK:350 )
|
-
-
8 楼
感谢分享心得,有规律的背后必有其原理性,学习你这深究的学习态度。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
栈顶应该是不固定的,不然ESP怎么会一直在变,应该是栈底是否是固定的,以前我也有过这样的疑问,一直纠结于这个问题,这个是操作系统分配管理的了,反正咱们不需要知道栈底地址是否固定,是在哪,PUSH的时候就进栈,POP就出来,知道不知道栈底无所谓了......
堆栈里存的是本地变量,函数返回地址等
新手, 说错了的地方请大家指正,以免误导!
|
|
|