我有一个没有源代码的应用程序(win32 exe 文件)。
是否可以编写 C# 应用程序并重用该 win32 .exe 文件中的某些功能?
我有一个没有源代码的应用程序(win32 exe 文件)。
是否可以编写 C# 应用程序并重用该 win32 .exe 文件中的某些功能?
你可以跑
dumpbin.exe /exports [your-win32.exe]
并查看它导出的功能。然后,您可以使用LoadLibrary()和GetProcAddress()(无论是 C# 的等价物)来调用这些函数。
当然,您需要知道这些函数的签名才能正确调用它们;即参数的数量和顺序等。
不知道这是否是你要找的,但如果另一个 exe 有一个 GUI,你可能可以通过向它发送消息来做一些事情。只需运行 Spy++,对其他应用程序做任何你想做的事,并在完成后查看日志。如果没有使用特殊控件,您可以通过获取所需控件的句柄并向它们发送适当的消息来操作该 GUI。如果您不希望用户知道您正在运行另一个应用程序,您可以在不同的桌面上运行它。
您可以利用的另一个选项是在另一个 exe 的进程中运行您自己的线程,并使用可用的各种 IPC 技术之一与您的应用程序进行通信。这里有很多关于远程线程注入的问题,所以请四处寻找。
最后,如果幸运的话,您需要的功能实际上位于 exe 使用的 DLL 之一上,可以是导出函数,也可以是 COM 接口。使用 Process Explorer 左右查看运行时,看看是否有任何模块看起来很有趣。就使用其他模块而言,DLL 显然要容易得多。