如何解决如何在Windows 32位x86程序集中获取EXCEPTION_POINTERS?
因此,我有一些基本的asm文件,看起来像下面的文件(由于print_eax很大且与问题无关,因此将其删除),并且一直使用此http://www.godevtool.com/ExceptFrame.htm作为信息源。但是我不确定如何获得EXCEPTION_POINTERS。我试图从堆栈中弹出,并使用不同的寄存器以防万一它通过了这些寄存器,以及每个寄存器的各种偏移量,但是老实说,我很茫然,无法通过Google找到解决方案。当我们输入FINAL_HANDLER时如何获得EXCEPTION_POINTERS?
global _main
extern _GetStdHandle@4
extern _WriteFile@20
extern _ExitProcess@4
extern _SetUnhandledExceptionFilter@4
section .text
_main:
push FINAL_HANDLER
CALL _SetUnhandledExceptionFilter@4
;---Protected code---
mov eax,dword [0xffffffff] ;Force C0000005h exception
; ExitProcess(0)
push 0
call _ExitProcess@4
; never here
hlt
FINAL_HANDLER:
; get EXCEPTION_POINTERS
;????
; get EXCEPTION_RECORD(dword [EXCEPTION_POINTERS+0])
mov eax,dword [EXCEPTION_POINTERS]
; get ExceptionCode(dword [EXCEPTION_RECORD+0])
mov eax,dword [eax]
call print_eax ; a simple procedure that outputs eax in hex
; ExitProcess(1)
push 1
call _ExitProcess@4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。