0

我有一个没有源代码的应用程序(win32 exe 文件)。

是否可以编写 C# 应用程序并重用该 win32 .exe 文件中的某些功能?

4

2 回答 2

2

你可以跑

dumpbin.exe /exports [your-win32.exe]

并查看它导出的功能。然后,您可以使用LoadLibrary()GetProcAddress()(无论是 C# 的等价物)来调用这些函数。

当然,您需要知道这些函数的签名才能正确调用它们;即参数的数量和顺序等。

于 2009-09-28T16:30:19.343 回答
1

不知道这是否是你要找的,但如果另一个 exe 有一个 GUI,你可能可以通过向它发送消息来做一些事情。只需运行 Spy++,对其他应用程序做任何你想做的事,并在完成后查看日志。如果没有使用特殊控件,您可以通过获取所需控件的句柄并向它们发送适当的消息来操作该 GUI。如果您不希望用户知道您正在运行另一个应用程序,您可以在不同的桌面上运行它。

您可以利用的另一个选项是在另一个 exe 的进程中运行您自己的线程,并使用可用的各种 IPC 技术之一与您的应用程序进行通信。这里有很多关于远程线程注入的问题,所以请四处寻找。

最后,如果幸运的话,您需要的功能实际上位于 exe 使用的 DLL 之一上,可以是导出函数,也可以是 COM 接口。使用 Process Explorer 左右查看运行时,看看是否有任何模块看起来很有趣。就使用其他模块而言,DLL 显然要容易得多。

于 2009-09-28T21:05:06.083 回答