Fórum Importar func. de uma DLL em um arq. de recurso sem salva-lo #196525

21/11/2003

0

Tem como utilizar uma função em uma DLL, que esta armazenada em um arquivo de recurso, [b:e5ff8ecd47]sem precisar salvá-la no HD do usuário[/b:e5ff8ecd47]? Tipo: carregar ela na memória e usá-la normalmente sem que o arquivo exista no HD.

OBS: se alguém souber como usar a DLL carregada em um TMemoryStream também ajuda.

Desde já agradeço a vc que dispensou um minuto de sua atenção para ler este tópico.


Akelle Kara

Akelle Kara

Responder

Posts

25/11/2003

Akelle Kara

Tem ou não uma forma de usar uma DLL armazenada na RAM, sem que ela precise ser salva no HD?


Responder

Gostei + 0

25/11/2003

Beppe

Eu acho que você devria considerar usar o HD. Há motivos para pensar assim.

Alguns internals do funcionamento de imagens PEs(.exe, .dll, .ocx, .bpl):

1) Quando um PE é aberto para execução(do código), ele é carregado pelo loader, e alguns offsets são ajustados.
2) O handle de uma image nada mais é o endereço do primeiro byte do PE. Se você tentar Caption := PChar(HInstance), verá ´PE´. No arquivo existem alguns bytes que antecedem isto, mas são destinados ao DOS e pulados.
3) A API pública do Win32 só permite a carga de PEs via nome de arquivo, embora deve haver alguma function em ntdll.dll que permita o que você quer.

Então, para fazer o que você quer, você terá que fazer o trabalho do loader, um trabalho árduo e sem muitos benefícios. Então passar o endereço da string ´PE´(offset = PImageDosHeader(Stream.Memory)._lfanew) para funções como GetProcAddress.


Responder

Gostei + 0

27/11/2003

Akelle Kara

Valeu, então vou distribuir as DLLs separadas mesmo...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar