Ver Mensaje Individual
  #15  
Antiguo 03-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
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