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
public
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.