背景:我有一个应用程序在 Windows 10 版本 1511 之前一直运行良好,但从版本 1607 开始就崩溃了。它会产生访问冲突:
STACK_TEXT:
03799f54 00f91cfa 24d1ae78 0000000f 0000001f GDI32!ext-ms-win-gdi-internal-desktop-l1-1-0_NULL_THUNK_DATA_DLB+0xc22b
WARNING: Stack unwind information not available. Following frames may be wrong.
0379a01c 01570000 00000000 00000000 00000023 THEEXE+0xb91cfa
0379a038 77015125 00000000 00000000 01ba0254 THEEXE+0x1170000
0379a088 00cd691c 0379afa8 016a5276 00000000 ntdll!RtlpAllocateHeapInternal+0x155
00000000 00000000 00000000 00000000 00000000 THEEXE+0x8d691c
Win10 1607 及更高版本的 GDI dll 有变化,之前只有gdi32.dll
,GdiPlus.dll
但截至 1607gdi32.dll
基本上是新 dll 的存根,gdi32full.dll
我想了解应用程序崩溃的原因并找到解决方法。exe 被打包的事实使得用 WinDbg、Ida Pro 等分析它变得非常困难。PE ID 工具建议 exe 包含 Themida(Themida v2.0.1.0 - v2.1.8.0(或更新版本)+ Hide PE Scanner Option)。
我试图遵循一个涉及 OllyDBG 的教程和一个名为的脚本Themida - Winlicense Ultra Unpacker 1.4.txt
,虽然这似乎有很长的路要走,但它并没有产生正确的解压二进制文件。问题可能是某些代码在 PE 部分中定义的地址空间之外执行,因为我收到了几个这样的错误:
Memory breakpoint range reduced: OllyDbg is unable to activate memory breakpoint on the whole specified address range (EA: ). Breakpoint is reduced to range 00401000..0086CFFF.
还尝试了 unthemida 2.0 和 unthemida 3.0,但它们在创建进程后挂起(似乎已终止)。我正在寻找有关如何解压缩 exe 的帮助或指示,以便我可以分析崩溃。
可以在此处找到具有相同问题的软件的免费版本(安装程序)。exe可以在这里找到:removed
可以通过启动应用程序并在提供的示例项目 (EAExample.eap) 上单击打开来重现崩溃。