É possível externo um aplicativo Win32 (possui apenas arquivo exe) [fechado
-
18-09-2019 - |
Pergunta
Eu tenho um aplicativo (arquivo exe win32) sem código -fonte.
É possível escrever um aplicativo C# e reutilizar alguma função nesse arquivo Win32 .exe?
Solução
Você pode correr
dumpbin.exe /exports [your-win32.exe]
e veja quais funções ele exporta. Então você pode usar (qualquer que seja o equivalente C#) Loadlibrary () e GetProcaddress () para chamar essas funções.
Obviamente, você precisa conhecer as assinaturas dessas funções para chamá -las corretamente; ou seja, número e ordem dos parâmetros, etc.
Outras dicas
Não sei se é isso que você está procurando, mas se o outro exe tem uma GUI, você provavelmente pode fazer algumas coisas enviando mensagens para ele. Basta executar o SPY ++, fazer o que quiser com o outro aplicativo e assista ao log quando terminar. Se nenhum controle especial for usado, você poderá operar essa GUI obtendo as alças dos controles desejados e enviando as mensagens apropriadas. Se você não deseja que o usuário saiba que está executando o outro aplicativo, pode executá -lo em uma área de trabalho diferente.
Outra opção que você pode explorar é executar seu próprio tópico dentro do processo do outro exe e se comunicar de volta ao seu aplicativo em uma das várias técnicas do IPC disponíveis. Muitas perguntas foram feitas aqui sobre a injeção remota de threads, então procure por isso.
Por fim, se você tiver sorte, a funcionalidade necessária está realmente em uma das DLLs usadas pelo EXE, como funções exportadas ou como uma interface COM. Dê uma olhada no tempo de execução usando o Process Explorer ou mais e veja se algum dos módulos parece interessante. No que diz respeito ao uso de outros módulos, as DLLs são obviamente muito mais fáceis.