📄 stacknormal.asm
字号:
;********************************
;文件:StackNormal.asm *
;功能:与StackOver一起测试在 *
; 堆栈越界时的页分配的过程 *
;********************************
.386p
.model flat,stdcall
NULL = 0
MB_OK = 0
COMMIT = 2000H
RESERVE = 100000H
extrn MessageBoxA:proc
extrn ExitProcess:proc
.data
Caption db 'Caption',0
TextNormal db 'Normal',0
TextOver db 'Overflow',0
EspTemp dd ?
.code
main:
lea eax,[esp-4*2] ;生成异常处理链表
xchg fs:[0],eax
mov ebx,offset SEH
push ebx
push eax
mov [EspTemp],esp
call WriteStack
call MessageBoxA,NULL,offset TextNormal,offset Caption,MB_OK
pop eax
pop ebx
xchg fs:[0],eax
call ExitProcess,0
SEH:
mov esp,[EspTemp]
call MessageBoxA,NULL,offset TextOver,offset Caption,MB_OK
call ExitProcess,0
WriteStack proc ;写堆栈
push ebp
mov ebp,esp
lea edi,[esp-1]
mov ecx,COMMIT + 4096
mov al,'L'
std
rep stosb
cld
mov esp,ebp
pop ebp
ret
WriteStack endp
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -