Autor |
Beitrag |
Tastaro
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Do 08.11.07 14:06
Hallo alle,
gibt es eine Möglichkeit, dass ein Delphi-Programm erkennen kann, ob es in der IDE gestartet wurde (F9) oder ob es standalone läuft?
Beste Grüße
Tastaro
|
|
Sinspin
Beiträge: 1322
Erhaltene Danke: 117
Win 10
RIO, CE, Lazarus
|
Verfasst: Do 08.11.07 16:55
Die einfachste Möglichkeit besteht darin einfach einen Parameter an dein Programm zu übergeben wenn du es über die IDE startest.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Mitmischer 1703
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 08.11.07 17:09
Wie geht das?
_________________ Die Lösung ist nicht siebzehn.
|
|
Timosch
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Do 08.11.07 17:39
Ähm, Start->Parameter...
Stichwort ParamStr und ParamCount
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Mitmischer 1703
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 08.11.07 17:41
In FoSu guck ich!
_________________ Die Lösung ist nicht siebzehn.
Zuletzt bearbeitet von Mitmischer 1703 am Do 08.11.07 20:16, insgesamt 1-mal bearbeitet
|
|
Tastaro
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Do 08.11.07 17:59
Sinspin hat folgendes geschrieben: | Die einfachste Möglichkeit besteht darin einfach einen Parameter an dein Programm zu übergeben wenn du es über die IDE startest. |
Klar geht das. Aber es soll nicht nur bei mir funktionieren sondern auch bei meinen Kollegen. Und das ohne, dass man vergessen kann den Parameter anzugeben.
Beste Grüße
Tastaro
|
|
Wolle92
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Do 08.11.07 18:13
Vielleicht einfach kontrollieren, ob der IDE-Prozess existiert?
|
|
Tastaro
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Do 08.11.07 18:24
Wolle92 hat folgendes geschrieben: | Vielleicht einfach kontrollieren, ob der IDE-Prozess existiert? |
Das reicht leider nicht. Denn die IDE kann ja laufen obwohl ich das Programm nicht aus der IDE gestartet habe.
Beste Grüße
Tastaro
|
|
Wolle92
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Do 08.11.07 18:32
Letzte Änderung mit aktueller Zeit vergleichen?
Bei maximal 1 Minute Abweichung kann man mit ziemlicher Sicherheit davon ausgehen, dass es mit dem Debugger gestartet wurde, da es dann ja erst grade kompiliert wurde...
Oder gibt es vielleicht eine Möglichkeit, dass man die Caption eines fremden Fensters eines fremden Prozesses lesen kann? Wenn es grad am Debuggen ist, steht nämlich Running drin...
|
|
Chryzler
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Do 08.11.07 18:37
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 08.11.07 19:05
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| function IsDebuggerPresent: Boolean; begin Result := DebugHook <> 0; end;
procedure TForm1.FormCreate(Sender: TObject); begin if IsDebuggerPresent then Label1.caption:='in Delphi' else Label1.caption:='not in Delphi'; end; |
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 10.11.07 14:18
Prüf einfach ob ein INT 03h ne Exception wirft
Es gibt aber für nahezu jeden Debugger-Check inzwischen zahlreiche Möglichkeiten, diesen zu umgehen.
DebugHook: Einfach Nillen ...
IsDebuggerPresent: Einfach das TLS ändern ...
Parameter-Check: Einfach noppen ...
Datum\Uhrzeit: Erzeugt sowieso false positives ... Ist daher kein Schutz ...
IDE-Prozess prüfen: Noppt man einfach die Prüfung raus oder ändert den hardcodierten Namen ...
Parent-Prozess-Prüfung: Siehe vorigen Punkt ...
Und nun bitte zu den ernsthaften Vorschlägen!
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Chryzler
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Sa 10.11.07 14:37
Ich glaube Tastaro geht es weniger darum, dass man die Überprüfung nicht umgehen kann, sondern darum, dass z.B. beim Debuggen zusätzliche Debug-Informationen ausgegeben werden o.ä.
|
|
Tastaro
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Mo 19.11.07 14:30
Hallo alle,
das mit dem DebugHook ist genau das was ich brauchte.
Vielen Dank für den Tipp.
Chryzler hatte recht: Es geht mir nicht darum die Software irgendwie zu schützen sondern noch einen zusätzlichen Button mit bestimmter Funktionalität anzuzeigen wenn das Programm aus der IDE gestartet wird.
Danke an alle die versucht haben mir zu helfen.
Beste Grüße
Tastaro
|
|