Entwickler-Ecke
Sonstiges (Delphi) - Feststellen ob mein Delphi-Programm mit Debugger läuft
Tastaro - Do 08.11.07 14:06
Titel: Feststellen ob mein Delphi-Programm mit Debugger läuft
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 - 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.
Mitmischer 1703 - Do 08.11.07 17:09
Wie geht das?
Timosch - Do 08.11.07 17:39
Ähm, Start->Parameter...
Stichwort ParamStr und ParamCount
Mitmischer 1703 - Do 08.11.07 17:41
In FoSu guck ich! :les:
Tastaro - 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 - Do 08.11.07 18:13
Vielleicht einfach kontrollieren, ob der IDE-Prozess existiert?
Tastaro - 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 - 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...
Delete - 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 - 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 :P ...
Datum\Uhrzeit: Erzeugt sowieso false positives :nixweiss: ... Ist daher kein Schutz ...
IDE-Prozess prüfen: Noppt man einfach die Prüfung raus oder ändert den hardcodierten Namen :mrgreen: ...
Parent-Prozess-Prüfung: Siehe vorigen Punkt 8) ...
Und nun bitte zu den ernsthaften Vorschlägen! :twisted:
Chryzler - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!