在手动映射的模块上创建可用的 x64 C++ 异常

逆向工程 C++ C
2021-06-29 01:23:42

我正在尝试将 Lua 绑定到手动映射的模块上。正如您在此处清楚地看到的那样

他们在他们的 API 上使用 C++ 或 C 异常并且没有办法避免它们。我想知道是否有可能在我的模块上启用该异常。

我曾尝试按如下方式修补这些行:

#define LUAI_THROW(L,c) c->throwed = true
#define LUAI_TRY(L,c,a) \
    __try { a } except(0xDEADBEEF) { if ((c)->status == 0 && ((c)->throwed == true)) (c)->status = -1; }
#define luai_jmpbuf     int  /* dummy variable */

/* chain list of long jump buffers */
struct lua_longjmp {
  struct lua_longjmp *previous;
  luai_jmpbuf b;
  volatile int status;  /* error code */
  bool throwed;
};

并使用 /EHa 编译了我的模块,但它没有按预期工作。

0个回答
没有发现任何回复~