AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm zum knacken

Ein Thema von Hansa · begonnen am 9. Aug 2003 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
Seite 10 von 11   « Erste     8910 11      
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#91

Re: Programm zum knacken

  Alt 15. Aug 2003, 14:13
@Uncle Cracker
Zitat:
Dein Programm gibt bei dem Namen 'Test' eine Zugriffsverletzung aus und beendet sich aber bei dem Namen 'Test1'.
Bei allen anderen Worten funzt alles.

Kann es sein, dass dies ein Bug ist, oder hat das was mit dem Algo zutun? Das denke ich aber nicht.
Nein es ist kein "Bug", sondern ein Ärgernis für euch. Die sache ist ziemlich simpel erklärt. Ich habe einen Maschinen-Code verschlüsselt. Deiser wird per Serial entschlüsselt. Nur wenn die richtige Serial eingegeben wurde wird der korrekte und lauffähige Code entschlüsselt. Gibt man eine falsche serial ein dann ist dieser Maschinencode auch falsch und sollte eigentlich NICHT ausgeführt werden. Aber auf diese Überprüfung habe ich verzichtet und rufe den entschlüsselten Code immer auf. Dies führt zu Zugriffverletzungen. Um Abstütze zu reduzieren habe ich diesen Aufruf in einen try except Block gekapselt. Allerdings keinen Delphi generierten try except Block sondern einen per Assembler erzeugen Structured Exception Handling = SEH Frame. Dieser IST wesentlich stabiler als der Delphi SEH Frame. Trotzdem kann man Code ausführen der selbst diesen SEH wirkungslos macht ! In diesem Moment wird im besten Falle nur die EXE terminiert. So gesehen eine kleine Gemeinheit meinerseits

Eine sichere Überprüfung ob nun der richtige Code entschlüsselt wird ist aber sehr einfach und denoch sicher einbaubar. Falls du also weiter experimentieren willst dann kann ich das noch einbauen.
Diese Überprüfung funktioniert so daß man sie nicht als Angriffsmethode gebrauchen kann. D.h. selbst wenn ich diese Überprüfung einbaue musst du denoch knacken. Somit lässt sich diese Überprüfung auch zur Verifikation von mehreren Serials benutzen.


Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#92

Re: Programm zum knacken

  Alt 15. Aug 2003, 14:35
Zitat:
ich wollte mal wissen wie man überhaupt einen Wert in einer Exe datei von delphi speichern kann?
Da gibt es mehrere Wege:

Als normale Konstante
Delphi-Quellcode:
const
  MeinWert: TGUID = ['{A5F774AA-9DAF-4F52-A96D-DFF12FEB0086}'];
die im Datensegment der Anwendung gespeichert würde.

Da wir aber aktiven und verschlüsselten Code möglichst auch mit Daten versehen wollen speichern wir diese Daten im Codesegment
Delphi-Quellcode:
function Copyright: PChar;
asm
      MOV EAX,OFFSET @@1
      RET
@@1: DB 'Portion Copyright (c) 2003 by Hagen Reddmann', 0
end;
Mit Writeln( Copyright ); greifen wir also ReadOnly auf eine Testkonstante die im Codesegment gespeichert wurde zu.

So, als Schutzmechanismus muß man immer auch das Konzept des Schutzes überdenken, dies ist der Erste Schritt. Wichtig dabei, zerlege jeden Algorithmus in ZWEI Teile. Einem zum Installieren des Schutzes und verschlüsseln in einer separaten Anwendung, und in der geschützten Anwendung NUR zur Verifikation und Entschlüsselung den anderen Teil des Algos.

Damit die Schutzsoftware weiß wo sie was zu verschlüsseln und zu patchen hat integriert man Marker in die zu schützende Software. Alles was zwischen und inklusive der Marker ist wird dann verschlüsselt.

Delphi-Quellcode:
function StartCode: PChar;
asm
     MOV EAX,OFFSET StartMarker
     RET
StartMarker:
     DB 'CODESTART'#0
end;

procedure ProtectedCode;
begin
 ....
end;

procedure StopMarker;
asm
      DB 'STOPCODE'#0
end;
 
function StopCode: PChar;
asm
      MOV EAX,OFFSET StopMarker + 9
      RET
end;
StopCode - StartCode = SizeOf(ProtectedCode);
Wie man den Code in ProtectedCode nun schreiben muß hängt davon ab wie man diesen Code entschlüsselt. In meiner Demo erzeuge ich einen Byte Array Block, kopiere alles zwischen StartCode bis StopCode da hinein. Dann entschlüssele ich dieses ByteArray und springe per CALL in diesen Speicherbereich hinein. D.h. der eigentliche verschlüsselte Code wird niemals direkt ausgeführt sondern nun eine Kopie die entschlüsselt wurde im dynamischen Speicher.

Die Schutzsoftware muß nun die EXE Patchen. Die lädt die EXE zB. in einem TMemoryStream, sucht nach 'STARTCODE' und 'STOPCODE' und verschlüsselt diesen Bereich. Danach wird der TMemoryStream wieder auf die Platte gespeichert.

Man könnte also auch den Code zwischen StartCode-StopCode als normale Resource in die EXE einlinken, oder sogar diesen Code als verschlüsselte Datei als Registrationsschlüssel verschicken.

WICHTIG! dabei ist das dann aber dieser Code NIEMALS mit relativen Einsprungadressen in zB. API Funktionen arbeiten darf. Das liegt daran das diese Adressen relativ zur Adresse im Codesegment wo der CALL steht durch den Moduleloader realloziert werden. Ein einfaches LoadLibrary() im ProtectedCode ist also tabu und würde zum Absturtz führen. Am besten ist es für ALLE diese Funktionen eine eigene "Realokationstabelle" zu definieren.

Delphi-Quellcode:
var
  MyReloc = packed record
    LoadLibaray: function(Name: PChar): THandle; stdcall = @LoadLibrary;
    FreeLibrary: function(handle: THande): Integer; stdcall = @FreeLibrary;
   .. usw. usw.
  end;
Das Hauptprogram initialisiert nun diesen MyReloc mit den absoluten Adressen zu den benötigten Funktionen. Dem Protectedcode wird dieser Record als Paramter übergeben, und alle Funktionen werden nun mit

Delphi-Quellcode:
procedure ProtectedCode(var Reloc: TMyReloc);
var
  Lib: THandle;
begin
  Lib := Reloc.LoadLibrary('my.dll');
  Reloc.FreeLibrary(Lib);
end;
den indirekten Aufruf über Reloc aufgerufen. Die gilt auch für statische Object Methoden, aber NICHT für virtuelle oder dynamisch Methoden, oder Interfaces. Die letzteren machen nämlich nichts anderes als unser Reloc Record.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#93

Re: Programm zum knacken

  Alt 15. Aug 2003, 14:38
Übrigens, diese Methode mit der eigenen Relocationstabelle benötigt man auch um seinen eigenen Code in andere Prozesse zu injektieren, sprich Code zB. in den Explorer Prozess dynamisch einzubinden.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#94

Re: Programm zum knacken

  Alt 16. Aug 2003, 12:03
@Hagen: Du bist der Verschlüsselungskönig. Schön dich zu kennen. Ich denke deine Technik könnte und wird einiges revolutionieren...

@all: Ich habe da ne interessante Seite gefunden die ich euch nicht vorenthalten möchte. Es geht darum wie man seine Programme "cracksicher(er)" macht und schützt.
S-A-VE Anti Cracking Tipps
Viel Spaß beim Lesen!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#95

Re: Programm zum knacken

  Alt 16. Aug 2003, 13:08
Zitat:
@Hagen: Du bist der Verschlüsselungskönig. Schön dich zu kennen. Ich denke deine Technik könnte und wird einiges revolutionieren...
Naja jetzt übertreibst du schamlos, das einzigste was ich mit Sicherheit weis ist das ich nichts weis.

Gruß Hagen
  Mit Zitat antworten Zitat
wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#96

Re: Programm zum knacken

  Alt 29. Aug 2003, 23:25
sehr interessant

könntet ihr euch mal mein programm ansehen bitte ?

http://www.delphipraxis.net/internal...ct.php?p=65045

für anregungen und verbesserungsvorschläge wäre ich dankbar
  Mit Zitat antworten Zitat
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#97

Re: Programm zum knacken

  Alt 27. Sep 2003, 20:48
Hi,

hab auch ein Prog zum Cracken. Aber bei dem kommt es nicht darauf an das Passwort zu finden (was prinzipiell eh unmöglich ist, da ich mit SHA-1 arbeite), sondern eher einfach nur die Nachricht herauszubekommen, die bei der Eingabe des richtigen Passwortes angezeigt wird. Das sollte schon kompliziert genug sein.

An dieser Stelle verweise ich euch jetzt einfach mal zu meinem Thema:
CrackIt!

MfG.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#98

Re: Programm zum knacken

  Alt 21. Okt 2003, 23:39
Hey Leute,

macht ihr es euch net ein bissl umständlich?!? Habe jetzt 5 Minuten an dem Prog gearbteitet (mit dissambler und Hex-Editor) Habe auf den jne und je - abfragen die Offsets verändert (von 75 in 74) und habe so die Möglichkeit, alle Kennwörter einzugeben... ganz easy...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#99

Re: Programm zum knacken

  Alt 21. Okt 2003, 23:51
oooohhh, das da kommt ja sogar von mir. 80 DL, na klasse. Muß mich dann doch mal intensiver mit dem Thema befassen. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#100

Re: Programm zum knacken

  Alt 21. Okt 2003, 23:57
hm.. sorry, habe nicht alle 7 Seiten gelesen. Wir sind dann wohl den selben Weg gegangen..Naja. wie dem auch sei... ok...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 11   « Erste     8910 11      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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