Einzelnen Beitrag anzeigen

BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#1

Warum ist eine zwittrige EXE möglich?

  Alt 26. Okt 2010, 23:00
Delphi-Version: 5
Hallo liebe DelphiPraxis!
Bin heute beim Surfen auf dieses Problemchen gestoßen.
Und weil ich etwas Zeit hatte und mich das irgendwie nicht in Ruhe gelassen hat, hab ich mich eben hingesetzt und mal selbst was ausprobiert:

Delphi-Quellcode:
program DllTest;

uses
  Windows,
  SysUtils,
  Dialogs,
  Classes;


procedure Testy; export;
begin
  ShowMessage('Success!');
end;

exports Testy;

type
  TProc=Procedure of Object;
var
  Lib:THandle;
  Proc:TProc;
begin
  Lib:=LoadLibrary(PChar(ParamStr(0)));
  if Lib=0 then
    ShowMessage('Nicht geladen!')
  else
  begin
    @Proc:=GetProcAddress(Lib,'Testy');
    Proc;
    FreeLibrary(Lib);
  end;
end.

So. Und jetzt meine Frage: Warum funktioniert denn das? Ist da jetzt irgendwo ein Hacken? Habe ich irgendwelche Einschränkungen (z.B. auf Win7 o.ä.)?

Anmerkungen:
Delphi-Version: 3
TestSystem: Windows XP

P.S. Es geht mir bei diesem Beitrag weniger um den praktischen Nutzen, vielmehr um die Problemstellung an sich. (Im verlinkten Artikel haben die schließlich ein Problem damit. Evtl. habe ich auch den Artikel nicht richtig verstanden?!?)

P.P.S. Bin mir nicht sicher, ob es evtl. nicht unters Offtopic gehört...

Gruß,
Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat