是否可能extern一个win32应用程序(只有exe文件)

时间:2009-09-28 16:26:57

标签: c# winapi executable reusability

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

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

2 个答案:

答案 0 :(得分:2)

你可以运行

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

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

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

答案 1 :(得分:1)

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

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

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