0

我有一个 .exe,它是从 .for (fortran) 和 .c 源文件的组合编译而来的。

由于图形服务器出现错误,它无法在 Win98 之后的任何设备上运行:

“Ox7e4467a9 的用户 32.dll 中的访问冲突错误”</p>

除非有其他方法可以解决上述错误(?),否则我假设我必须使用更现代的图形服务器从源代码重新编译 .exe。我有所有的文件来做这个吧一个.lib 文件!

是否可以从我拥有的当前 .exe 中提取有关丢失的 lib 文件的任何信息?

可以反汇编.exe,但我不认为我从中获得多少?

4

2 回答 2

1

您可能无法从可执行文件中“剪切” lib 文件。即使您可以以某种方式从中获取代码,标准编译器和链接器也不知道如何链接它,因为它没有所需的链接信息(它们不包含在结果二进制文件中)。

但是,如果您的问题是您的程序可以在 Win98 上运行,但不能在基于 NT 的系统(XP、Vista、Win7)上运行,我认为更容易找出导致程序崩溃的不兼容问题。您提到访问冲突发生在 user32.dll 中。在调试器中启动程序,查看崩溃发生的函数。确保您已加载 PDB 符号(以便您可以看到内部非公共函数的名称)。追踪调用了哪个 Win32 API 以及它的参数是什么。试着弄清楚,不能访问的内存应该是什么。

同样,如果没有任何其他信息,也无法帮助您。

于 2012-04-26T14:50:51.307 回答
0

一旦集成到图像文件(您的 exe)中,静态绑定到应用程序(由链接器完成)的库(您的 .lib)就无法与您自己的代码分离、区分,因此无法检索通过反编译exe从lib中获取代码。

于 2012-05-23T09:23:56.520 回答