Re: RES: RES: [delphi-br] Executar aplicativos a par tir da memória
Li esse artigo sobre carregar e executar Dlls diretamente da memória, Load a DLL From a Resource Directly From Memory in Delphi Applicationshttp://delphi.about.com/od/windowsshellapi/a/delphi-load-resource-dll-into-memory.htm, não é o que vc precisa mais talvez te dê uma luz. Seguindo a linha de raciocínio do Dirlei Dionísio, tem tbm o Pascal Script. Em 18 de junho de 2010 22:08, Dirlei Dionísio dir...@gmail.com escreveu: Eric, Suponho que *o que você quer fazer*, seja possível, mas não *do jeito que você quer*. Executar programas em memória, sem que eles sejam carregados do disco (como um executável) é possível através de uma Máquina Virtual. Não me refiro a programas do tipo VMWare ou VirtualBox, mas a programas como a JVM (Java Virtual Machine). Você deve saber que a JVM é um processo (.exe no Win) que lê e executa programas Java compilados, mas que não são executáveis. Pois bem, o seu programa principal - aquele EXE que lê o banco de dados - pode funcionar como uma máquina virtual, executando programas compilados para a sua VM (Virtual Machine). Você não precisa criar uma VM, pode utilizar linguagens de extensão que já possuem uma. Exemplos são o Python e Lua (criada na PUC-Rio). Já fiz experimentos nessa linha com Lua e Delphi juntos. No meu caso os scripts lua eram armazenados em disco, compactados e criptografados, mas poderiam muito bem estar num banco de dados. Outros colegas fizeram experimentos com C e Python, C e Lua e C e Perl. A melhor linguagem de extensão para as nossas necessidades se mostrou ser Lua, por ser pequena, rápida e fácil de escrever. Se você se interessar em trabalhar nessa linha, posso te passar mais informações. []'s -- Dirlei Dionísio Novo artigo: O estágio House do bom programador http://MaisQueBomCodigo.blogspot.com Em 18 de junho de 2010 19:10, Rubem Rocha rubem.ro...@dtmanaus.com.br escreveu: Não contraria, pois o RAM Drive constaria na memória, e como vc quer executar um binário que está em memória, ... Resta só pesquisar pra saber como criar um RAM drive via API do Windows. E mais ainda, descobrir como esse RAM Drive seja visível somente à sua aplicação. Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de eric_developer Enviada em: sexta-feira, 18 de junho de 2010 18:09 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Assunto: Re: RES: RES: [delphi-br] Executar aplicativos a partir da memória pelo Delphi ou outra linguagem, talvez o que desejo exatamente não seja possível, como eu disse, é possível criar disco virtual usando um pedaço da RAM, ou seja, acredito que isso já contraria o que descreveu, mas enfim... Caso alguém conheça uma forma, por favor, nos informe. Grato, Eric Developer Systems www.magaldi.eti.br --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br , Rubem Rocha rubem.ro...@... escreveu Em qualquer ambiente operacional, todo processo é um programa em execução, e um programa nada mais é do que código a ser executado que encontra-se armazenado em memória de massa. Ou seja, salvo em disco. Portanto, para um programa se tornar um processo ele deve ser carregado do disco e depois executado. E nesse processo, não tem pra onde correr, você sempre dependerá da API do sistema operacional para isso. Os mais experientes me corrijam caso eu esteja errado! Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br ] Em nome de eric_developer Enviada em: sexta-feira, 18 de junho de 2010 17:48 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br Assunto: Re: RES: [delphi-br] Executar aplicativos a partir da memória quem sabe exista alguma forma que não dependa da API do Windows. Eric Developer Systems www.magaldi.eti.br --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.brdelphi-br%2540yahoogrupos.com.brdelphi-br% 2540yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.brdelphi-br%2540yahoogrupos.com.brdelphi-br% 2540yahoogrupos.com.br , Rubem Rocha rubem.rocha@ escreveu A API do Windows só suporta carregar um processo em disco e executá-lo. Portanto, vais ter que obrigatoriamente salvar esse binário em disco (seja físico ou virtual) e executá-lo. A alternativa, como o Waltão sugeriu, seria um ramdrive, que seria um disco em memória. Sds.
Re: RES: RES: [delphi-br] Executar aplicativos a par tir da memória
Excelente contribuição, Fabricio! Não sabia que isso era possível; é provável que eu use esse recurso em breve numa implementação de segurança em que venho trabalhando. Isso diminuiria as chances de um ataque conhecido como Man-in-the-middle (ou homem do meio - quando um cracker intercepta a comunicação entre dois recursos, por exemplo um EXE e uma DLL). Eric, me parece que executar uma DLL em memória ou usar o Pascal Script (também citado pelo Fabricio) podem ser alternativas mais simples, dependendo do que você precisa. Respondendo a sua pergunta, a VM seria parte de uma DLL que seu aplicativo carregaria consigo (lua.dll, por exemplo). Ao invés de executar a VM passando um parâmetro, você (1) executaria uma função da DLL para iniciar a VM, (2) outra função para carregar um programa a partir da memória (um script) e (3) outra função para executar o programa que você carregou na VM. Como todos podemos observar, algo que aparentemente não era possível, agora tem pelo menos 4 alternativas para ser implementado (incluindo a sugestão do RAM Drive) - graças ao conhecimento compartilhado. Parabéns para o grupo! -- Dirlei Dionísio Novo artigo: O estágio House do bom programador http://MaisQueBomCodigo.blogspot.com Em 18 de junho de 2010 22:35, Fabricio Colombo fabricio.colombo@gmail.com escreveu: Li esse artigo sobre carregar e executar Dlls diretamente da memória, Load a DLL From a Resource Directly From Memory in Delphi Applications http://delphi.about.com/od/windowsshellapi/a/delphi-load-resource-dll-into-memory.htm , não é o que vc precisa mais talvez te dê uma luz. Seguindo a linha de raciocínio do Dirlei Dionísio, tem tbm o Pascal Script. [As partes desta mensagem que não continham texto foram removidas]
Re: RES: RES: [delphi-br] Executar aplicativos a par tir da memória
Eric, Suponho que *o que você quer fazer*, seja possível, mas não *do jeito que você quer*. Executar programas em memória, sem que eles sejam carregados do disco (como um executável) é possível através de uma Máquina Virtual. Não me refiro a programas do tipo VMWare ou VirtualBox, mas a programas como a JVM (Java Virtual Machine). Você deve saber que a JVM é um processo (.exe no Win) que lê e executa programas Java compilados, mas que não são executáveis. Pois bem, o seu programa principal - aquele EXE que lê o banco de dados - pode funcionar como uma máquina virtual, executando programas compilados para a sua VM (Virtual Machine). Você não precisa criar uma VM, pode utilizar linguagens de extensão que já possuem uma. Exemplos são o Python e Lua (criada na PUC-Rio). Já fiz experimentos nessa linha com Lua e Delphi juntos. No meu caso os scripts lua eram armazenados em disco, compactados e criptografados, mas poderiam muito bem estar num banco de dados. Outros colegas fizeram experimentos com C e Python, C e Lua e C e Perl. A melhor linguagem de extensão para as nossas necessidades se mostrou ser Lua, por ser pequena, rápida e fácil de escrever. Se você se interessar em trabalhar nessa linha, posso te passar mais informações. []'s -- Dirlei Dionísio Novo artigo: O estágio House do bom programador http://MaisQueBomCodigo.blogspot.com Em 18 de junho de 2010 19:10, Rubem Rocha rubem.ro...@dtmanaus.com.brescreveu: Não contraria, pois o RAM Drive constaria na memória, e como vc quer executar um binário que está em memória, ... Resta só pesquisar pra saber como criar um RAM drive via API do Windows. E mais ainda, descobrir como esse RAM Drive seja visível somente à sua aplicação. Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de eric_developer Enviada em: sexta-feira, 18 de junho de 2010 18:09 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br Assunto: Re: RES: RES: [delphi-br] Executar aplicativos a partir da memória pelo Delphi ou outra linguagem, talvez o que desejo exatamente não seja possível, como eu disse, é possível criar disco virtual usando um pedaço da RAM, ou seja, acredito que isso já contraria o que descreveu, mas enfim... Caso alguém conheça uma forma, por favor, nos informe. Grato, Eric Developer Systems www.magaldi.eti.br --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br , Rubem Rocha rubem.ro...@... escreveu Em qualquer ambiente operacional, todo processo é um programa em execução, e um programa nada mais é do que código a ser executado que encontra-se armazenado em memória de massa. Ou seja, salvo em disco. Portanto, para um programa se tornar um processo ele deve ser carregado do disco e depois executado. E nesse processo, não tem pra onde correr, você sempre dependerá da API do sistema operacional para isso. Os mais experientes me corrijam caso eu esteja errado! Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br ] Em nome de eric_developer Enviada em: sexta-feira, 18 de junho de 2010 17:48 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br Assunto: Re: RES: [delphi-br] Executar aplicativos a partir da memória quem sabe exista alguma forma que não dependa da API do Windows. Eric Developer Systems www.magaldi.eti.br --- Em delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br , Rubem Rocha rubem.rocha@ escreveu A API do Windows só suporta carregar um processo em disco e executá-lo. Portanto, vais ter que obrigatoriamente salvar esse binário em disco (seja físico ou virtual) e executá-lo. A alternativa, como o Waltão sugeriu, seria um ramdrive, que seria um disco em memória. Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.brmailto: delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br delphi-br%2540yahoogrupos.com.br ] Em nome de eric_developer Enviada em: sexta-feira, 18 de junho de 2010 09:27 Para: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br