C++获取函数返回地址

来源:互联网 发布:形容女人漂亮的网络词 编辑:程序博客网 时间:2024/05/17 09:45
#define Stack_Length (4 * 4 * 4)static Object *_esp_arr[Stack_Length];Object GetRet(Object caller){Object *_esp;__asm mov _esp, espfor (int i = 0; i <= Stack_Length - 1; i++){_esp_arr[i] = &_esp[i];}DWORD Protect = 0x00, CodeProtect = Protect|RLIB_PAGE_EXECUTE_READ;for (int k = 0; k <= Stack_Length - 1; k++){if (_esp[k] > caller){Protect = MemoryAllocator::Query(AppBase::GetCurrentProcess(), *_esp_arr[k])->Protect;if (Protect == CodeProtect){_esp = _esp_arr[k]; break;}}}return Object(*_esp);}
这个本想自行实现异常的跳转, 其实setjmp和longjmp就可以了

原创粉丝点击