如果我发现SEH的访问违规行为,我该如何获取违规地址? GetExceptionInformation为我提供了包含
的LPEXCEPTION_POINTERS如何在不编写转储的情况下获取此信息?
答案 0 :(得分:2)
EXCEPTION_RECORD
结构有一个ExceptionAddress
字段。
答案 1 :(得分:2)
内存地址以及操作类型包含在ExceptionRecord structur中的ExceptionInformation字段中。来自MSDN:
<强>如果ExceptionInformation 强>
一组描述异常的附加参数。 RaiseException函数可以指定此参数数组。对于大多数异常代码,数组元素是未定义的。下表描述了定义了数组元素的异常代码。
异常代码含义
EXCEPTION_ACCESS_VIOLATION
数组的第一个元素包含一个读写标志,指示导致访问冲突的操作类型。如果此值为零,则线程尝试读取不可访问的数据。如果此值为1,则线程尝试写入不可访问的地址。如果此值为8,则该线程将导致用户模式数据执行保护(DEP)违规。
第二个数组元素指定不可访问数据的虚拟地址。