Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > API de Windows
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 31/10/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
Saber si la aplicación fue ejecutada desde Delphi

saludos,

tengo una curiosidad, miren colegas, necesito detectar a través de códigos si mi aplicación fue ejecutada desde Windows o desde Delphi (despues de compilar), y si es posible cambiar este valor.

miles de gracias de antemano colegas.

saludos!
aeff!
Reply With Quote
  #2  
Old 31/10/2008
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, se puede saber qué aplicación ha lanzado a otra (aplicaciones como TaskInfo te lo dicen), por lo tanto es seguro que se puede.
aquí puedes ver la diferencia:





En este caso una se laza desde el IDE y otra desde otra aplicación.

Lo que por ahora no se es como obtener esa info.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #3  
Old 31/10/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
> kernel32.dll
>> Process32First
>> Process32Next
>>> TProcessEntry32.th32ParentProcessID

PD; talvez puedas "renombrar" las clases y nombres de ventanas de Delphi.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
  #4  
Old 01/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
colegas, no entiendo??? que me estan sugiriendo??

saludos!
aeff!
Reply With Quote
  #5  
Old 01/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
a ver si capté algo, me sugieres que la cosa puede venir por "CreateToolhelp32Snapshot"??
Reply With Quote
  #6  
Old 01/11/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Quote:
Originally Posted by aeff View Post
a ver si capté algo, me sugieres que la cosa puede venir por "CreateToolhelp32Snapshot"??
Código Delphi [-]
uses TlHelp32;
 
//...
 
function GetParentPID(dwProcessId: Cardinal): Cardinal;
var
 ProcessEntry32: TProcessEntry32;
 hSnapshot: Cardinal;
begin
 Result := 0;
 hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 if hSnapshot <> INVALID_HANDLE_VALUE then
  begin
   if Process32First(hSnapshot, ProcessEntry32) then
    repeat
     if ProcessEntry32.th32ProcessID = dwProcessId then
      begin
       Result := ProcessEntry32.th32ParentProcessID;
       Break;
      end;
    until not Process32Next(hSnapshot, ProcessEntry32);
   CloseHandle(hSnapshot);
  end;
end;

Aunque ahora que lo pienso un poco mejor:

Código Delphi [-]
//...
 
function NtQueryInformationProcess(ProcessHandle, ProcessInformationClass: Cardinal; ProcessInformation: Pointer; ProcessInformationLength: Cardinal; ReturnLength: PCardinal): Cardinal; stdcall external 'ntdll';
 
function GetParentPID(dwProcessId: Cardinal): Cardinal;
var
 hProcess: Cardinal;
 ProcessBasicInformation: record
  ExitStatus, PebBaseAddress, AffinityMask, BasePriority, UniqueProcessId, InheritedFromUniqueProcessId: Cardinal;
 end;
begin
 Result := 0;
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, False, dwProcessId);
 if hProcess <> 0 then
  begin
   if NtQueryInformationProcess(hProcess, 0, @ProcessBasicInformation, SizeOf(ProcessBasicInformation), nil) = 0 then
    Result := ProcessBasicInformation.InheritedFromUniqueProcessId;
   CloseHandle(hProcess);
  end;
end;

Para luego:

Código Delphi [-]
function GetProcessImageFileNameA(hProcess: Cardinal; lpImageFileName: PChar; nSize: Cardinal): Cardinal; stdcall external 'psapi';
 
procedure TForm1.Button1Click(Sender: TObject);
var
 dwProcessId, hProcess: Cardinal;
 FileName: array [1..MAX_PATH] of Char;
begin
 dwProcessId := GetParentPID(666);
 if dwProcessId <> 0 then
  begin
   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_TERMINATE, False, dwProcessId);
   if hProcess <> 0 then
    begin
     GetProcessImageFileNameA(hProcess, @FileName, SizeOf(FileName));
     if LowerCase(ExtractFileName(PChar(@FileName))) = 'delphi32.exe' then
      TerminateProcess(hProcess, 0); // por ejemplo
     CloseHandle(hProcess);
    end;
  end;
end;

end.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
  #7  
Old 03/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
diaaablos!!! eso está bello, habia hecho algo parecido pero esa API que usaste "GetProcessImageFileNameA" si que no tenia ni idea de que existia, muchas gracias, lo que habia hecho era listar los proceso con la API "CreateToolhelp32Snapshot" y luego buscar su proceso padre con el valor "th32ParentProcessID" del registro "TProcessEntry32", bueno, esta chévere este código, envio respuestas luego.

ahora, ¿se podrá cambiar ese parámetro?, es decir, se podrá de alguna forma cambiar esa información de proceso padre e hijo??

saludos!
espero que me entiendan!
muchas gracias, de veras, muchas gracias!!

aeff!
Reply With Quote
  #8  
Old 03/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
ahh! ni tampoco sabia de la API "NtQueryInformationProcess",

saludos!
Reply With Quote
  #9  
Old 03/11/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Quote:
Originally Posted by aeff View Post
...¿se podrá cambiar ese parámetro?, es decir, se podrá de alguna forma cambiar esa información de proceso padre e hijo??...
Si el proceso ya existe y no hay la posibilidad de volverlo a correr; solo se me ocurre modificarlo a "bajo nivel".

Si no deseas que sepan que tu aplicación ejecutó un determinado proceso (por ende puedes ejecutarlo), te aconsejo revisar la API CreateProcessWithLogon.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
  #10  
Old 11/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
se me ocurre algo:

el proceso puede ejecutarse, averiguar "de donde salió", y si no es del proceso "delphi32" entonces se me ocurre una idea, inyectarnos dentro del proceso "delphi32" y luego crear el proceso nuevamente, luego finalizar el primer proceso que no fue ejecutado por "delphi32".

¿que crees?, traigo este idea para ser debatida antes de someterme a algo, ¿piensas que pueda resultar?

muchas gracias nuevamente colega
saludos!

aeff!
Reply With Quote
  #11  
Old 11/11/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
aeff, me parece una idea aceptable, pero antes de darle mi voto me agradaría saber a qué componente o aplicacion deseas engañar, para ver si hay alguna alternativa optima.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
  #12  
Old 11/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
diaaaaaaablos!!, acabo de confirmar que en este foro deben existir personas que programan desde que estaban formándose en el vientre de su madre,cHackAll, cómo sabías que mi intención era la de engañar unos componentes. Te cuento que se dicen llamar los AlphaControls, una vez obtuve una versión FULL pero ahora he perdido datos y solo encuentro una versión Trial v4.78 para Delphi 5 que conseguí antes, resulta que estos componentes emiten un mensaje antes de que se creen las ventanas de la aplicación enunciando su versión de prueba, esto es jodedor pero solo sale si la aplicación no ha sido ejecutada por el IDE de Delphi, por eso es que he tratado de hacer algo, ¿que crees?

muchas gracias de antemano colega,
saludos!
aeff!

Last edited by aeff : 12/11/2008 at 00:04.
Reply With Quote
  #13  
Old 12/11/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Ok, dame el enlace de la version que quieres "analizar" pues en una de las 60000 ocurrencias de Google yo encontre la v6
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
  #14  
Old 12/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
no tengo idea de cual enlace me hablas, por si acaso te diré que los conseguí en este sitio, tengo la versión 4.78 para Delphi 5, pero es trial, ¿que más te puedo decir?, no tengo acceso FULL a Internet y mucho menos a ese sitio, así que con eso te digo que tengo tirar con lo que tengo, esos componentes los obtuve una vez en un centro que me dieron la posibilidad de navegr y quise no desaprovechar el tiempo, ya ves,

muchas gracias de antemano colega!
saludos!
aeff!
Reply With Quote
  #15  
Old 12/11/2008
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Quote:
Originally Posted by aeff View Post
...inyectarnos dentro del proceso "delphi32" y luego crear el proceso nuevamente, luego finalizar el primer proceso que no fue ejecutado por "delphi32".
(1º) No se si este hilo debería continuar por esos derroteros en estos foros.
(2º) Creo que para que eso funcionase, creo que el proceso delphi32 debería estar "vivo", y no se si eso es lo que quieres.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #16  
Old 13/11/2008
aeff's Avatar
aeff aeff is offline
Miembro
 
Join Date: Oct 2006
Location: Cuba, Guantánamo
Posts: 348
Poder: 20
aeff Va camino a la fama
de acuerdo, si no podemos continuar con este tema en estos foros no hay problemas, en realidad no pretendo dejar de respetar las normas de este foro, el proceso delphi32 en caso que esté en ejecución se puede hacer lo propuesto anterior mente, de lo contrario pienso en una idea un poco rustica: crear una proceso que registre las clases que contiene este proceso delphi32 originalmente y luego crear el otro proceso,
¿que creen?

saludos!
muchas gracias!
aeff!
Reply With Quote
  #17  
Old 13/11/2008
cHackAll's Avatar
[cHackAll] cHackAll is offline
Baneado?
 
Join Date: Oct 2006
Posts: 2,159
Poder: 22
cHackAll Va por buen camino
Si bueno, pero por qué estas tan seguro que funcionará de esta manera?, si yo crease un componente "trial" que reaccione tal y como describes, no solo revisaria el parent PID, sino tambien el "IsDebuggerPresent", un FindWindow(xXx....), una verificacion de objetos OLE-COM instanciados por el "ejecutor", etc,. etc.

Ahora dejame ver si entendi, lo que quieres es correr el Delphi "en segundo plano", inyectarle un codigo para que éste ejecute un programa que use el componente :P, luego finalizar el Delphi?

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Aplicacion en Delphi 6 ejecutada por Internet canelita Internet 1 10/07/2008 16:29
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04/01/2007 22:44
saber la ip de una URL (desde delphi) User_baja1 Internet 4 13/09/2005 12:30
¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez? nuri Varios 7 21/07/2005 14:07
Detectar aplicacion a ser ejecutada. anitra_cattivo API de Windows 7 05/11/2004 18:52


All times are GMT +2. The time now is 02:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi