Re: RES: RES: [delphi-br] Executar aplicativos a par tir da memória

2010-06-19 Por tôpico Fabricio Colombo
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

2010-06-19 Por tôpico Dirlei Dionísio
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

2010-06-18 Por tôpico Dirlei Dionísio
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