Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2015
Nipx4215 Nipx4215 is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 12
Poder: 0
Nipx4215 Va por buen camino
Gracias a ambos, sigo haciendo pruebas

@escafandra solo que debe ser explorer.exe en lugar de Explorer.exe porque si no falla

tambien hay una manera mas fiable de encontrar al explorer real, porque explorer puede haber muchos que no son precisamente explorer, digamos abrir con openprocess el proceso padre de ExecuteWithParent.exe y automáticamente sería el explorer

sigo investigando, les cuento si encuentro algo
Responder Con Cita
  #2  
Antiguo 03-07-2015
Nipx4215 Nipx4215 is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 12
Poder: 0
Nipx4215 Va por buen camino
Cita:
MSDN
PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
Los atributos heredados del proceso especificado incluyen handles, device map, processor affinity, priority, quotas, process token y job object. (Algunos atributos, como el debug port vendrán del proceso de creación, no el proceso especificado por este handle.)
La pregunta sería que otros atributos no se heredan por esta forma, msdn no especifica más
Responder Con Cita
  #3  
Antiguo 03-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
escafandra,

Cita:
Empezado por escafandra
...el código anterior no funciona si se ejecuta desde el IDE, una vez compilado debe ser ejecutado desde el mismo explorer...


En las pruebas realizadas con Delphi 7 sobre Windows 7 Professional x32 con el código del Msg #10, este funciono correctamente desde el IDE y de forma independientemente, con la salvedad de que el ParentProcess en este caso debe ser explorer.exe en lugar de Explorer.exe

Saludos,

Nelson.
Responder Con Cita
  #4  
Antiguo 03-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Nipx4215,

Cita:
Empezado por escafandra
...En realidad un proceso puede modificar la memoria de otro, independientemente de quién lo haya creado...
Cita:
Empezado por escafandra
...si pretendes basar una protección de algún componente en el hecho de que se ejecute o no desde el IDE, quizás estés en un apuro, a no ser que exista una solución al problema de encontrar el verdadero padre...
Cita:
Empezado por Nipx4215
...sigo investigando...


Pregunto : ¿Has considerado hacer un hash a explorer.exe y verificar el mismo en tu proceso?

Revisa este código:
Código Delphi [-]
  unit Unit1;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, IdHashMessageDigest, IdHash, IdHashSHA1;
  
  type
    TForm1 = class(TForm)
      Button1: TButton;
      Button2: TButton;
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    Form1: TForm1;
  
  implementation
  
  {$R *.dfm}
  
  function GetMD5(const FileName : String): String;
  var
     MD5 : TIdHashMessageDigest5;
     FS : TFileStream;
  begin
     Result := EmptyStr;
     MD5 := TIdHashMessageDigest5.Create;
     FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
     try
        Result := MD5.HashStreamAsHex(FS);
     finally
        MD5.Free;
        FS.Free;
     end;
  end;
  
  function GetSHA1(const FileName : String): String;
  var
     SHA1 : TIdHashSHA1;
     FS : TFileStream;
  begin
     Result := EmptyStr;
     SHA1 := TIdHashSHA1.Create;
     FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
     try
        Result := SHA1.HashStreamAsHex(FS);
     finally
        SHA1.Free;
        FS.Free;
     end;
  end;
  
  procedure TForm1.Button1Click(Sender: TObject);
  var
     FileName : String;
     MsgUsr, Title : String;
  begin
     FileName := 'C:\Windows\explorer.exe';
     MsgUsr := GetMD5(FileName);
     Title := 'MD5 ' + FileName;
     MessageBox(Handle, PChar(MsgUsr), PChar(Title), MB_OK + MB_ICONINFORMATION);
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  var
     FileName : String;
     MsgUsr, Title : String;
  begin
     FileName := 'C:\Windows\explorer.exe';
     MsgUsr := GetSHA1(FileName);
     Title := 'SHA1 ' + FileName;
     MessageBox(Handle, PChar(MsgUsr), PChar(Title), MB_OK + MB_ICONINFORMATION);
  end;
  
  end.
El código anterior en Delphi 2010 sobre Windows 7 Professional x32, Permite calcular un Hash MD5 y SHA1 a un archivo seleccionado, como se muestra en la siguiente imagen:



Nota: La idea en este caso particular, es calcular el hash de explorer.exe y guardarlo dentro de la aplicación para que esta pueda verificar si efectivamente corresponde al hash del proceso padre actual.

Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #5  
Antiguo 03-07-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Nipx4215 Ver Mensaje
...escafandra solo que debe ser explorer.exe en lugar de Explorer.exe...
...explorer puede haber muchos que no son precisamente explorer...
Tienes razón, el tema fue experimentar con distintos procesos padre y no supeditarlo solo a explorer. Un cambio a última hora me llevó a poner Explorer. Explorer hay muchos pero para experimentar es irrelevante quien sea el padre, a no ser que tengas un interés especial en el tema.

Cita:
Empezado por nlsgarcia Ver Mensaje
...En las pruebas realizadas con Delphi 7 sobre Windows 7 Professional x32 con el código del Msg #10, este funciono correctamente desde el IDE y de forma independientemente...
En delphi7 bajo Win 8.1 no me ha funcionado, probablemente por las opciones de compatibilidad del nuevo S.O. es por lo que avisé de no correr bajo IDE

Cita:
Empezado por nlsgarcia Ver Mensaje
¿Has considerado hacer un hash a explorer.exe y verificar el mismo en tu proceso?
Puede ser una buena idea, pero el archivo no va a ser el mismo según la versión del S.O. y además no se está a salvo de que M$ lo cambie en una actualización. Por otro lado, no sabemos lo que pretende realmente Nipx4215, si descartar como padre al explorer u otro proceso, en cuyo caso quizás es hash sea más "estable"..., o no.


Lo ideal sería encontrar el verdadero padre.


Saludos.
Responder Con Cita
  #6  
Antiguo 04-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Nipx4215,

Cita:
Empezado por escafandra
...Lo ideal sería encontrar el verdadero padre...
Es correcto

Cita:
Empezado por escafandra
...Por otro lado, no sabemos lo que pretende realmente Nipx4215, si descartar como padre al explorer u otro proceso...


Pregunto:

1- ¿Que versión de Delphi y Windows (x32/x64) vas a utilizar para el problema en cuestión?.

2- ¿Puedes describir que tipo de aplicación utilizara este tipo de verificación y por que es necesaria?.

Espero sea útil

Nelson.
Responder Con Cita
  #7  
Antiguo 04-07-2015
Nipx4215 Nipx4215 is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 12
Poder: 0
Nipx4215 Va por buen camino
Hola

1.-Sería delphi 7, win7 x64
2.-Es solo evitar que sea lanzado con un programa diferente al explorer, hasta ahorita al programa no han podido desempacarlo, y la única manera que lo pueden atacar es en memoria. Por eso se quiere evitar esto.
Responder Con Cita
  #8  
Antiguo 04-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Nipx4215,

Cita:
Empezado por Nipx4215
...hasta ahorita al programa no han podido desempacarlo, y la única manera que lo pueden atacar es en memoria...


Pregunto:

1- ¿Que significa que no han podido desempacarlo?

2- ¿Podrías explicar cual es la función de esta aplicación?.

Espero sea útil

Nelson.
Responder Con Cita
  #9  
Antiguo 04-07-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Añado otra pregunta: ¿Deseas evitar que lo lancen con un depurador (debugger)?

Saludos.
Responder Con Cita
  #10  
Antiguo 04-07-2015
Nipx4215 Nipx4215 is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 12
Poder: 0
Nipx4215 Va por buen camino
Hola

Desempacar es lo contrario a empacar un programa con un packer como aspack.com

En este caso no es depurar porque CreateProcess no ha sido lanzado con DEBUG_ONLY_THIS_PROCESS o DEBUG_PROCESS, pudiendo evitarlo con checkRemoteDebuggerPresent o IsDebuggerPresent. La técnica acá es abrir con OpenProcess y rematar con WriteProcessMemory.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si la aplicación fue ejecutada desde Delphi aeff API de Windows 16 13-11-2008 00:37:18
Aplicacion en Delphi 6 ejecutada por Internet canelita Internet 1 10-07-2008 16:29:07
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez? nuri Varios 7 21-07-2005 14:07:51
Detectar aplicacion a ser ejecutada. anitra_cattivo API de Windows 7 05-11-2004 18:52:41


La franja horaria es GMT +2. Ahora son las 20:31:01.


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