Pergunta

Atualmente, estou trabalhando com injeção de DLL e preciso ter um único binário híbrido que possa atuar como executável e uma DLL. Pensei em talvez escrever uma função Dllmain e Winmain e depois compilá -la como executável, mas não sei o que aconteceria se fizesse isso. Sei que é possível combinar uma DLL e exe usando algo como o ThinStall ou extraindo a DLL para um local temporário e depois indo dali, mas não quero mexer com nada disso. Então, basicamente, é possível definir um Winmain e DLL Main e depois usar o executável resultante como ambos e, se não, isso é possível? Desde já, obrigado!

Foi útil?

Solução

Não.

Tanto uma DLL quanto um exe têm um cabeçalho PE (executável portátil). Esse cabeçalho tem um campo IMAGE_FILE_HEADER::Characteristics. O bit 14 desse campo é 0 (para um exe) ou 1 (para uma DLL).

Outras dicas

Por que você não coloca todo o código comum em uma biblioteca estática (.lib) e possui o projeto DLL e o Projeto Exe como um invólucro muito fino em torno da biblioteca estática?

Você pode criar uma cópia temporária do seu executável, corrigir o cabeçalho do PE e injetar esta cópia. Outra maneira é colocar a DLL como recurso binário para o executável. No tempo de execução, você pode escrever esse recurso binário em um arquivo temporário e usá -lo para injeção.

É possível exportar funções de um exe também. Portanto, você deve ser capaz de carregar o LOADLIBRARY ("foo.exe") seguido de getProcaddress (hfoo, "bar")

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