C# 是否可以将win32应用程序外部化(仅包含exe文件)

C# 是否可以将win32应用程序外部化(仅包含exe文件),c#,winapi,executable,reusability,C#,Winapi,Executable,Reusability,我有一个没有源代码的应用程序(win32 exe文件) 是否可以编写一个C应用程序并重用该win32.exe文件中的某些函数?您可以运行 dumpbin.exe /exports [your-win32.exe] 看看它输出了什么功能。然后,您可以使用(无论什么是C#等价物)并调用这些函数 当然,为了正确调用这些函数,您需要知道这些函数的签名;i、 e.参数的数量和顺序等。您可以运行 dumpbin.exe /exports [your-win32.exe] 看看它输出了什么功能。然后,您可

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

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

您可以运行

dumpbin.exe /exports [your-win32.exe]
看看它输出了什么功能。然后,您可以使用(无论什么是C#等价物)并调用这些函数

当然,为了正确调用这些函数,您需要知道这些函数的签名;i、 e.参数的数量和顺序等。

您可以运行

dumpbin.exe /exports [your-win32.exe]
看看它输出了什么功能。然后,您可以使用(无论什么是C#等价物)并调用这些函数


当然,为了正确调用这些函数,您需要知道这些函数的签名;i、 e.参数的数量和顺序等。

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

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


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

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

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


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

可执行文件很少导出任何东西。当然,如果exe不导出任何函数,或者它只导出您不需要的函数,那么您就倒霉了。(我知道你知道这一点,但其他人可能不知道)可执行文件很少导出任何东西。当然,如果exe不导出任何函数,或者它只导出你不需要的函数,那你就倒霉了。(我知道你知道这一点,但其他人可能不知道)非常感谢你。我在这里学到的关键词是:1)用于监视GUI控制消息的Spy++2)线程注入3)我可以通过获取句柄来操作GUI。4) dumpbin.exe/exports[your-win32.exe]可以获取导出的funcs 5)LoadLibrary()和GetProcAddress()来调用这些函数。非常感谢。我在这里学到的关键词是:1)用于监视GUI控制消息的Spy++2)线程注入3)我可以通过获取句柄来操作GUI。4) dumpbin.exe/exports[your-win32.exe]可以获取导出的funcs 5)LoadLibrary()和GetProcAddress()来调用这些函数。