;--------------------------------------------------------------------------------
;请访问64位汇编语言官方站 [url]Http://Www.X64Asm.Com[/url]
;电子邮件 [email]Jxc25@X64Asm.Com[/email] Tel:130********
;--------------------------------------------------------------------------------
;编译命令 Ml64.exe /c
;连接命令 Link.exe /SubSystem:Windows /Entry:Entry
;--------------------------------------------------------------------------------
;代码
.CODE
;--------------------------------------------------------------------------------
c1:mov rsp,rdx
;rcx是异常(PEXCEPTION_RECORD)
;rdx=rsp(ULONG64)
;r8是寄存器详情(PCONTEXT)
;r9是异常详情(PDISPATCHER_CONTEXT)
add rsp,28H
ret
b1 PROC;没有堆栈恢复不要动rsp
mov eax,[rcx]
ret
b1 ENDP
;入口点
Entry PROC FRAME:c1;FRAME堆栈恢复:堆栈恢复程序
sub rsp,28H
.allocstack 028h;倒退恢复需要另外的信息
.ENDPROLOG;上面是上个函数的
xor ecx,ecx
call b1
nop;上面是倒退恢复
add rsp,28H;下面是上个函数的
ret
Entry ENDP
;--------------------------------------------------------------------------------
;程序结束
;请访问64位汇编语言官方站 [url]Http://Www.X64Asm.Com[/url]
;电子邮件 [email]Jxc25@X64Asm.Com[/email] Tel:130********
;--------------------------------------------------------------------------------
;编译命令 Ml64.exe /c
;连接命令 Link.exe /SubSystem:Windows /Entry:Entry
;--------------------------------------------------------------------------------
;代码
.CODE
;--------------------------------------------------------------------------------
c1:mov rsp,rdx
;rcx是异常(PEXCEPTION_RECORD)
;rdx=rsp(ULONG64)
;r8是寄存器详情(PCONTEXT)
;r9是异常详情(PDISPATCHER_CONTEXT)
add rsp,28H
ret
b1 PROC;没有堆栈恢复不要动rsp
mov eax,[rcx]
ret
b1 ENDP
;入口点
Entry PROC FRAME:c1;FRAME堆栈恢复:堆栈恢复程序
sub rsp,28H
.allocstack 028h;倒退恢复需要另外的信息
.ENDPROLOG;上面是上个函数的
xor ecx,ecx
call b1
nop;上面是倒退恢复
add rsp,28H;下面是上个函数的
ret
Entry ENDP
;--------------------------------------------------------------------------------
;程序结束
END
原文链接:http://www.x64asm.com/viewthread.php?tid=537&extra=page%3D2