例外 – 赶上出口(1);
我有一个MFC SDI应用程序,它在启动期间加载DLL.我只能查看源代码并使用DLL但不能更改&重新编译它.
现在的情况是,每当DLL引发错误时,它将调用exit(),如下所示. bool Func() { // .. do something here if (error) { exit(999); } } 在我的MFC应用程序中,我设置了SetUnhandledExceptionFilter来处理所有异常,并创建了一个MiniDump用于调试目的. 所以现在的问题是,每当DLL遇到任何错误时,它只会调用状态代码为999的exit(),而我的ExceptionFilter将无法捕获它,因此没有为PostMortem调试创建MiniDump. 我很想知道: 我真正想做的是,每当DLL遇到错误时,我都希望生成一个MiniDump,这样我就可以进行PostMortem调试.还有什么可能在这种情况下有效吗? 谢谢. 解决方法
检查DLL的符号导入表.
您可能只能在运行时将其重新映射到您选择的功能. 怎么做(假设退出那里): 大多数DLL通过跳转表使用符号导入.如果在调用者上设置断点,您将看到它调用了一个长跳转指令.跳转表是PAGE_EXECUTE_READWRITE页面,因此您可以使用自己的地址覆盖跳转表的那个插槽. 跳转表的位置会有所不同,但它始终是加载地址的常量偏移量,因此是任何函数指针到GetProcAddress找到的DLL的常量偏移量. 当然,所有这些都假设DLL永远不会改变.可能有一种方法可以在运行时找到所有这些东西,但我不知道你会怎么做. 哦,你不能从exit()返回.你必须长时间跳出来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vbscript – 在Windows 10上运行的系统上设置本地计算机名称
- .net – 如何安装同一Windows服务的多个实例
- windows-phone-8.1 – Windows 10中的Windows Phone 8.1模拟
- 软件将Windows通知事件日志发送到linux syslog服务器并编码
- group-policy – GPO静默软件部署
- windows-server-2003 – 重启后自动启动Windows Server 200
- 是否可以对.NET应用程序中的用户dpi设置做出反应
- libglog.dll CMake 在Windows上编译、应用glog
- 64位 – VirtualBox Windows x64错误0xc000035a
- certificate – 签名的驱动程序在设备管理器中显示为unsing
- windows-server-2008 – 是否有替代WSUS for Win
- 允许域用户通过组策略修改Windows 7的本地打印机
- 为什么Windows Smart Screen在购买新证书后突然“
- 为什么XAML图像源属性包含“/ MyApp; component”
- 如何在Windows 2016上正确设置docker网络?
- windows – 如何在没有浏览器的情况下显示弹出窗
- windows-store-apps – 在Windows应用商店或通用
- F#interactive,对dll引用的API限制
- 在Windows上使用Hudson的Git插件克隆/获取存储库
- 对于Windows上的os.path.getmtime(),Python2.4和