![]() |
Feststellen, ob das eigene Programm debugged wird
Hallo,
als Kopierschutz hab ich in meinen Apps nur eine Lizenzdatei in einer verschlüsselten Datenbank gespeichert, und da kommt ein Hacker ja relativ einfach an den Speck aus dem die Träume sind ran. Schon seit vielen Jahren verwende ich AsPack ( ![]() |
AW: Feststellen, ob das eigene Programm debugged wird
|
AW: Feststellen, ob das eigene Programm debugged wird
Hallo,
vielen Dank für den Tipp!!! Das scheint ja genau das zu sein, was ich suche. Werde es gleich ausprobieren :-D :-D :-D |
AW: Feststellen, ob das eigene Programm debugged wird
Es ist ne schlechte Idee, es selber umzusetzen. Falls das Projekt es Wert ist, auf professionelle Lösunge zugreifen!
Der Cracker (bitte sag nicht Hacker) kann diese IsDebuggerPresent() Funktion locker umgehen, indem er die calls zuerst ausfindig macht und sich zurechtpatcht. Das Ausfindig machen in diesem Fall ist sehr einfach, denn all die importierten Funktionen aus Dlls werden in der Exe -genauer in der Importtabelle- vermerkt. Man würde sofort erkennen, dass ein Programm vlt. versucht, sich zu schützen, wenn man in der Importtabelle diese Funktion findet. Ein Tick besser ist es, diese Routine selber zu implementieren. ![]() an der PEB - Struktur (Process Environment Block: enthält Daten zum Prozess) etwas ändern. So sähe die Implementierung aus:
Delphi-Quellcode:
Oder du verschleierst den Import - einfach dynamisch laden, wobei dann bei GetProcAddress einen String übergeben musst, der hardcodiert in der Exe ist. Dieser sollte verschlüsselt sein, sonst kann man das wieder ausfindig machen.
function isBeingDebugged: Boolean;
asm mov eax, [FS:$30] movzx eax, [eax+2] end; Wie du siehst, ist es nicht so einfach. Es gibt sehr viele Wege, die ans Ziel (Knacken) führen. |
AW: Feststellen, ob das eigene Programm debugged wird
Achtung: Die Abfrage eines solchen Flags ist etwas gänzlich anderes als das was Anti-Cracking-Produkte tun.
Im Zweifelsfall patcht der böse Cracker den Funktionsaufruf einfach weg. Würde mich nicht wundern, wenn einige Debugger solche Funktionen automatisch hooken und einfach das falsche Ergebnis zurückliefern. Wenn nicht, ist so ein Aufruf auch relativ auffällig und weist dem Cracker vielleicht den Weg zu den sensiblen Codestellen. ![]() Wenn du es "einfach" willst, kannst du dir ja auch noch andere Komplettlösungen angucken. |
AW: Feststellen, ob das eigene Programm debugged wird
Hallo zusammen,
erst mal vielen Dank für die Beiträge. Dass "IsDebuggerPresent" relativ einfach zu umgehen ist, hab ich mir fast schon gedacht. Das Problem ist einfach, dass man wissen muss wie ein Cracker (ohne "H", ich hab's gelernt) vorgeht. Wenn man seine Arbeitsweise und Werkzeuge kennt, weiß man, wo man ansetzen muss. Soviel ist klar. Aber, wenn man dieses Know-How nicht hat, muss man auf professionelle Lösungen zurück greifen. Genau das hab ich ja getan. Es war wohl das falsche Pferd, und darum jetzt die eingangs beschriebenen Probleme. Seit über 3 Monaten telefoniere/maile ich mit AVG & Co rum und komme nicht weiter. Der Hersteller selber unternimmt offensichtlich auch nichts. Da ist mir ein löchriger Schutz dann doch lieber als der Verdacht des Kunden, Viren zu verschleudern. |
AW: Feststellen, ob das eigene Programm debugged wird
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz