【发布时间】:2012-04-02 13:39:13
【问题描述】:
我们的应用程序出现崩溃,无法调试,因为我们的一位合作伙伴认为使用真正可怕“CodeMeter”来加密他们的 DLL 是合适的。 CodeMeter 许可阻止所有尝试调试包含 CodeMeter 加密 DLL 的应用程序,甚至似乎导致从未处理的异常过滤器调用的 MiniDumpWriteDump 失败(此技术在没有加载此 DLL 的情况下有效)。只有在将加密的 DLL 加载到进程中时才会发生崩溃。
我正在疯狂地尝试调试它并确定是否是加密的 DLL 崩溃了,如果是,我如何向我们的合作伙伴提供足够的诊断信息来解决这个问题。
任何建议 - 也许我可以从未处理的异常过滤器中调用一些手动堆栈和模块遍历代码?
CodeMeter 是否具有构建设置,允许我们的合作伙伴生成仍然加密和许可但不会如此激进地破坏调试的构建?
为了以防万一有任何疑问,我并不是要破解许可,只是诊断这次崩溃。
【问题讨论】:
-
CodeMeter 似乎也禁用了其他 DbgHelp.dll 功能。 SymInitialize 在存在此 CodeMeter 加密 DLL 时也会失败。这让我想知道这个有毒 CodeMeter 软件偷偷选择破坏核心操作系统的哪些其他部分......
-
我找到了一些使用 CaptureStackBacktrace 遍历堆栈的示例代码。这仅显示异常过滤器的调用堆栈,而不是异常本身。
-
现在已经设法使用 __try __except 从加密的 DLL 中捕获并记录异常详细信息。尽管使用 CaptureStackBacktrace,仍然无法从 SEH 异常过滤器中获取有效的堆栈跟踪。
标签: visual-studio-debugging postmortem-debugging