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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top