问题标签 [seh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
878 浏览

windows - 如何使用 int3(VEH 或 SEH)

知道我想替换function prologuejmp跳转到我的分配区域(VirtualAllocateEx)。但是function prologue只有 3 个字节,并且jmp有 5 个字节。像这样:

如果我想使用 jmp 覆盖函数序言,则必须覆盖函数序言之后的第三条指令。

所以知道我想用 int3 替换函数序言来跳转到我的分配区域或任何地址,我该怎么做?

我尝试使用 VEH 或 SEH 来做到这一点,但我不知道如何做到这一点。

0 投票
1 回答
5513 浏览

c++ - C2712:不能在需要对象展开的函数中使用 __try

我正在将使用 VC++ 6.0 编写的软件迁移到 VS 2010/VC++2010。我有一个不能在调试模式下编译的项目。我有:

我没有提到__try

你明白吗?

0 投票
1 回答
994 浏览

windows - 关于汇编程序远调用和天堂之门,触发异常的段调用是否在抛出异常之前推送 cs 和 eip?

目前我正在玩被称为“天堂之门”的 windows/WOW64 技巧,正如你们中的一些人可能知道的那样,即使在 x86 程序中,它也允许我们进入 x64 模式(当我测试它时我很惊讶它有效!)但我知道它不受所有 Windows 版本的支持,所以我的代码(因为有代码)使用 seh,它看起来像这样:

我知道一个简单的“jmp .exit”可以解决问题,但我对此非常好奇

0 投票
2 回答
1685 浏览

delphi - 在 C++ Builder 中启用安全异常处理

对于 Windows 8 应用程序认证,有(除其他外)以下要求:

  • 3.2 必须使用/SafeSEH标志编译您的应用程序以确保安全的异常处理
  • 3.3 你的app必须使用/NXCOMPATflag编译,防止数据执行
  • 3.4 您的应用程序必须使用/DYNAMICBASE地址空间布局随机化 (ASLR) 标志进行编译

我无法找到如何在 C++Builder XE 中启用其中任何一个。

对于/NXCOMPATand /DYNAMICBASE,可以editbin.exe从 VS 或peflags.exeCygwin 使用。虽然我会对可能的副作用更有信心,但如果有本地方法来启用这些。

无论如何,我完全不知所措/SafeSEH

0 投票
1 回答
1252 浏览

windows - Windows32 API:函数入口上的“mov edi,edi”?

我正在逐步执行 Windows 7 中的结构化错误处理恢复代码(例如,在 SEH 处理程序完成并传回“CONTINUE”代码后会发生什么)。这是一个调用的函数:

我习惯了“push ebp/mov ebp,esp”的功能序言。“mov edi,edi”的目的是什么?

0 投票
0 回答
1467 浏览

c++ - __try 不在 HeapFree 上捕获异常

我试图捕捉一个HeapFree异常..

在 MSDN 上,它说HeapFree在尝试释放已释放的指针时具有未定义的行为。好吧,我在VS2010上试过了,它“抛出”了一个断点(windows已经触发了一个断点),然后是一个异常(一个堆已损坏)

我试图用 _ try/ _except 来捕捉它,但它没有被触发:

我怎样才能捕捉到这个异常?正常的 try/catch 也不起作用。我不知道发生了什么;我对解释比对解决方案本身更感兴趣。

0 投票
1 回答
252 浏览

winapi - 如何在特定功能上通过 /EHsc 获得 /EHa 的好处?

如果我知道extern "C"我的程序中的特定函数(例如,RaiseException)是引发 SEH 异常的唯一函数,并且我希望它们转换为 C++ 异常,那么我有什么方法可以“选择性地启用”/EHa该函数,以便异常被转换为CStructured_Exception没有膨胀或减慢程序的其余部分,通常是由/EHa?

0 投票
1 回答
763 浏览

c++ - _set_se_translator 的“get”等价物?

我需要使用当前的翻译器手动翻译结构化异常。

我如何“获得”某人设定的价值_set_se_translator

0 投票
3 回答
4185 浏览

windows - Visual Studio 2010 中的编程数据断点

我一直在尝试使用编程数据断点,CBreakpoint例如示例,通过使用SetThreadContext直接设置调试寄存器。我能找到的大多数参考资料表明,Visual Studio 在遇到数据断点时仍然会中断,即使它本身没有设置该数据断点。但是,这似乎不是 Visual Studio 2010 的工作方式。

我的情况是,当程序没有被调试时,我的数据断点工作得很好(它崩溃了STATUS_SINGLE_STEP,这是数据断点引发的异常)。如果我使用 WinDbg 进行调试,它也会正常中断。但是当在 Visual Studio 2010 下调试它时,它似乎只是继续运输并忽略断点。有没有人在 Windows 7 下的 Visual Studio 2010 下使用以编程方式设置的数据断点的经验?我需要对它们做些什么来破坏它们吗?(我尝试添加STATUS_SINGLE_STEP到“第一次机会例外”列表中,但行为没有改变。)

或者,我可能会做些什么来吞下STATUS_SINGLE_STEP调试器中的异常?结构化异常处理程序会在调试器看到异常之前吃掉它吗?这是一个 x86_64 程序这一事实有什么影响吗?在 Visual Studio 2010 设置中我需要做一些舞蹈吗?

0 投票
4 回答
5540 浏览

c - __try 和 __exception 可移植性

你好,再次对不起

我正在阅读英特尔的“Detecting Multiprocessor Topology in IA-32 Architecture”。我正在重新编写示例。但是我在代码中读到了这句话 __try 和 __except。

我在 MSDN Microsoft 网页上找到了一些信息,但我使用的是 gcc 编译器/链接器

__try 和 __except 是 gcc 中的有效句子吗?__try 和 __except 在 *nux 环境中是可移植的句子吗?确实存在比 __try 和 __except 语句更好的模式用于 C 中的异常处理?

提前致谢。