Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suche Unit: "IsDebuggerPresent" (https://www.delphipraxis.net/76387-suche-unit-isdebuggerpresent.html)

Balu der Bär 3. Sep 2006 14:34


Suche Unit: "IsDebuggerPresent"
 
Moin,

ich hatte damals mal in einem der Anti-Cracking-Threads aus der DP eine fertige Unit gefunden, IsDebuggerPresent.pas. Dummerweise habe ich diese Datei vor ein paar Wochen von meiner Festplatte gelöscht, ich habe jetzt die Anti-Cracking-Threads durchsucht, kann aber diese Unit nicht mehr finden. :-(

Hat die vielleicht noch jemand und könnte sie hier bereitsstellen? Danke.

3_of_8 3. Sep 2006 14:45

Re: Suche Unit: "IsDebuggerPresent"
 
Wofür ist die gut? Willst du testen, ob der Debugger läuft? Das geht recht einfach:

Delphi-Quellcode:
function DebuggerRunning: Boolean;
begin
Result:=DebugHook<>0;
end;

Daniel B 3. Sep 2006 14:47

Re: Suche Unit: "IsDebuggerPresent"
 
Man kann rausfinden ob das Programm in einen Debugger läuft, das würde jemand tun, der das Programm cracken will, diese unit hilft einem da ein bisschen entgegen zu wirken, aber ich würde die so nicht hergeben, es gibt noch genug Artikel dazu.

Balu der Bär 3. Sep 2006 14:51

Re: Suche Unit: "IsDebuggerPresent"
 
@3_of_8: Nein, so wie ich Michaels Artikel verstanden hab kann man das auch einfach wegpatchen da spezielle API-Funktionen benutzt werden.

Problem is nur das in der Unit auch noch andere kleine Funktionen zum Schutz enthalten waren, deshalb würde ich mich freuen wenn die noch jemand finden würde (für IsDebuggerPresent reicht mir auch Luckies Artikel, nur dann hab ich halt das andere nicht mehr).

@Daniel B: Warum schreibst du in diesen Thread wenn du sie eh nicht "hergeben" würdest? Ich erwarte keine Antwort auf die Frage.

brechi 3. Sep 2006 15:25

Re: Suche Unit: "IsDebuggerPresent"
 
isDebuggerPresentX
in der uallKernel @ http://uall.overclock.ch/uallCollection
Da Luckies Funktion nur für winNT ist.

Balu der Bär 3. Sep 2006 15:32

Re: Suche Unit: "IsDebuggerPresent"
 
Danke brechi, ich hatte mittlerweile bereits eine IsDebuggerPresent-Variante von dir gefunden, die wohl auch unter Win9.x funktioniert (teste ich später). Danke dir. :-)

gugelhupf 10. Jan 2007 06:36

Re: Suche Unit: "IsDebuggerPresent"
 
Zitat:

Zitat von 3_of_8
Wofür ist die gut? Willst du testen, ob der Debugger läuft? Das geht recht einfach:

Delphi-Quellcode:
function DebuggerRunning: Boolean;
begin
Result:=DebugHook<>0;
end;

Das funktioniert aber bei mir net, wenn ich's mit OllyDbg starte... :|
Also er erkennt den Debugger nicht :?

Balu der Bär 10. Jan 2007 07:57

Re: Suche Unit: "IsDebuggerPresent"
 
Mit dem hier geht es.

gugelhupf 11. Jan 2007 15:50

Re: Suche Unit: "IsDebuggerPresent"
 
Zitat:

Zitat von Balu der Bär
Mit dem hier geht es.

Hierbei
Delphi-Quellcode:
MOVZX  EAX, [EAX+2]
gibt es folgenden Fehler:
121. Ungültige Kombination von Opcode und Operanden

Balu der Bär 11. Jan 2007 15:54

Re: Suche Unit: "IsDebuggerPresent"
 
Unter Delphi 2006 lässt sich das fehlerfrei kompilieren.

gugelhupf 11. Jan 2007 16:01

Re: Suche Unit: "IsDebuggerPresent"
 
Zitat:

Zitat von Balu der Bär
Unter Delphi 2006 lässt sich das fehlerfrei kompilieren.

Suuuper! :)

Ich nutze leider D5, wie geht's dort? :shock:

OldGrumpy 11. Jan 2007 16:10

Re: Suche Unit: "IsDebuggerPresent"
 
Zitat:

Zitat von gugelhupf
Zitat:

Zitat von Balu der Bär
Unter Delphi 2006 lässt sich das fehlerfrei kompilieren.

Suuuper! :)

Ich nutze leider D5, wie geht's dort? :shock:

x86 Opcode-Referenz (mal bei Intel danach schauen zum Beispiel) suchen, lesen, verstehen, entsprechenden Opcode selber zusammenbauen und mittels emit einfach als Bytes einkompilieren. GANZ WICHTIG: Dranschreiben was sich hinter den emit-Bytes verbirgt, sonst verbringt man später viel Zeit damit, das wieder auszuknobeln.

Achja, und selbstverständlich ist es gar kein Problem, alle diese Checks zu umgehen. Aber das wird ja gerne ignoriert ;)

brechi 11. Jan 2007 16:12

Re: Suche Unit: "IsDebuggerPresent"
 
Delphi-Quellcode:
function IsDebuggerPresent: boolean; stdcall;
asm
  MOV    EAX, DWORD PTR FS:[$30]
  TEST   EAX, EAX
  JS     @@W9X
@@WNT:
  MOV    ECX, FS:[$18]
  MOV    ECX, DWORD PTR [ECX+$30]
  XOR    EAX, EAX
  MOV    AL, BYTE PTR [ECX+2]
  RET
@@W9X:
  MOV    EAX, DWORD PTR [$BFFC9CE4]
  MOV    ECX, DWORD PTR [EAX]
  CMP    DWORD PTR DWORD PTR [ECX+$54], 1
  SBB    EAX, EAX
  INC    EAX
  RET
end;
Trodtzem solltest besser die Funktion aus meinen units benutzen die weiter oben gepostet wurden, weil eine statische Adresse ist nicht so das dolle.

Olli 11. Jan 2007 17:58

Re: Suche Unit: "IsDebuggerPresent"
 
Grummel: "[Zitat Olliver] Leuchtturm [Ziatatende]" ... Name falsch, Rechtschreibung grausam. Setzen, Sechs! :mrgreen:

Zitat:

Zitat von brechi
isDebuggerPresentX
in der uallKernel @ http://uall.overclock.ch/uallCollection
Da Luckies Funktion nur für winNT ist.

Dir ist schon aufgefallen, dass Win9x ausstirbt? Ich wuerde sagen es ist weitgehend ausgestorben, weshalb ich bspw. auch keine Hemmungen habe meine Programme komplett fuer Unicode zu kompilieren.

Zitat:

Zitat von brechi
Trodtzem solltest besser die Funktion aus meinen units benutzen die weiter oben gepostet wurden, weil eine statische Adresse ist nicht so das dolle.

Jupp, dem moechte ich zustimmen. Obwohl es als (C-Praeprozessor/)Macro weit besser zu implementieren ist, weil es "dynamischer" ist :mrgreen: ... auch wenn ich ja Inline-Funktionen normalerweise Makros vorziehe. Leider geht beides in Delphi nicht so richtig ...

BTW: Hast du inzwischen den Sinn der Exception(s) begriffen? Siehe hier.

gugelhupf 12. Jan 2007 18:23

Re: Suche Unit: "IsDebuggerPresent"
 
Zitat:

Zitat von brechi
Delphi-Quellcode:
function IsDebuggerPresent: boolean; stdcall;
asm
  MOV    EAX, DWORD PTR FS:[$30]
  TEST   EAX, EAX
  JS     @@W9X
@@WNT:
  MOV    ECX, FS:[$18]
  MOV    ECX, DWORD PTR [ECX+$30]
  XOR    EAX, EAX
  MOV    AL, BYTE PTR [ECX+2]
  RET
@@W9X:
  MOV    EAX, DWORD PTR [$BFFC9CE4]
  MOV    ECX, DWORD PTR [EAX]
  CMP    DWORD PTR DWORD PTR [ECX+$54], 1
  SBB    EAX, EAX
  INC    EAX
  RET
end;
Trodtzem solltest besser die Funktion aus meinen units benutzen die weiter oben gepostet wurden, weil eine statische Adresse ist nicht so das dolle.

Dat klappt bei mir leider auch net... :gruebel:

gugelhupf 13. Jan 2007 21:10

Re: Suche Unit: "IsDebuggerPresent"
 
*push*

brechi 13. Jan 2007 21:12

Re: Suche Unit: "IsDebuggerPresent"
 
wenn du den Fehler nicht postest kann man dir auch nicht helfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz