Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm zum knacken (https://www.delphipraxis.net/7319-programm-zum-knacken.html)

negaH 14. Aug 2003 02:45

Re: Programm zum knacken
 
@Luckie:
Zitat:

Könnten wir das Thema in fünf Jahren noch mal aufgreifen?
Genau das ist der Denkfehler. Selbst in 25 Millionen Jahren dürfte keine Technik existieren die es per Brute Force knacken könnte. Brute Force bedeutet das Durchprobieren aller Schlüssel.

Man meint heutzutage das man 2^128 Schlüssel nicht per Brute Force knacken kann. 2^128 sind "3402 82366 92093 84634 63374 60743 17682 11456" als Dezimalzahl.

Die demo arbeitete mit 2^2048 =

"32 31700 60713 11007 30071 48766 88669 95196 04441 02669 71548 40321 30345 42752 46551 38867 89089 31972 01411 52291 34636 88717 96092 18980 19494 11955 91504 90921 09508 81523 86448 28312 06308 77367 30099 60917 50197 75038 96521 06796 05763 83840 67568 27679 22186 42619 75616 18380 94338 47617 04705 81645 85203 63050 42887 57589 15410 65808 60755 23991 23930 38552 19143 33389 66834 24206 84974 78656 45694 94856 17603 53263 22058 07780 56593 31026 19270 84603 14150 25859 28641 77116 72594 36037 18461 85735 75983 51152 30164 59044 03697 61323 32872 31227 12568 47108 20209 72515 71017 26931 32346 96785 42580 65669 79350 45997 26835 29986 38215 52516 63894 37335 54360 21354 33229 60464 53184 78604 95214 81935 55853 61105 95962 30656"

So das macht den Unterschied aus. Obige Zahlen Kolone muß als EINE Dezimalzahl betrachtet werden.

Nun fang schin mal an obige Zahl immer um EINS zu dekrementieren.
Wir sehen uns dann zu Implosion unserer Sonne wieder, bis denne ne :)

Gruß Hagen

Luckie 14. Aug 2003 02:48

Re: Programm zum knacken
 
Das meinte ich nicht. Ich meinte, dass ich in 5 Jahren eventuell ansatzweise soweit sein werde, dass ein Versuch lohnen könnte.

negaH 14. Aug 2003 02:51

Re: Programm zum knacken
 
@Asserbad
Zitat:

Du willst ja bloss billig ueberpruefen lassen, ob der Code sicher ist
Also wenn einer zwei Schlüssel findet ist mir das aber garantiert 100€ wert. So gesehen haste absolut Recht.

@Luckie:

Achso, dann habe ich das falsch verstanden. Ich werd's so wie Asserbad machen, mein Bambus-Schlafzimmer wartet auf mich, die "Olle" schläft ja schon. (ist natürlich nicht wörtlich zu nehmen, ich mag meine Freundin natürlich :))

Gruß

sakura 14. Aug 2003 08:56

Re: Programm zum knacken
 
Wahnsinn :!: Wir haben ja alle nichts zu tun. Na ja, meine Idee ist um weites billiger aber keiner hat mir bis jetzt das mickrige Passwort gegeben oder ein Patch gebaut :cry:

...:cat:...

Uncle Cracker 14. Aug 2003 17:14

Re: Programm zum knacken
 
Hi Hagen,

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.

Kannst ja mal gucken, was das Problem ist.

Uncle Cracker 15. Aug 2003 08:53

Re: Programm zum knacken
 
Hi hansa,

ich habe mir nochmal Mühe gegeben und für dein Standart Programm vom Anfang einige gültige Serials rauszubekommen.

Die lauten folgender Maßen: St, pW, Pw, Wp, wP, af, fa, Ts, xO

Fortsetzung folgt... :mrgreen:

Hansa 15. Aug 2003 09:04

Re: Programm zum knacken
 
Und wenn Du alles gelesen hättest, dann wüßtest Du auch wieso das so ist. :mrgreen: Jetzt die Preisfrage: Warum ist das so ? Brauchst nur alles nochmal zu lesen :lol:

Lillebrohr 15. Aug 2003 13:26

Re: Programm zum knacken
 
Guten Tag,


OMG, da ist man mal 2 Tage nicht online und schon gehts hier ab wie auf manchen Reversing-Boards.

Werde mich dann auch mal mit beiden CrackMes beschäftigen.

PS: negaH, meine Bnakverbindung schick ich dir heute. :mrgreen:

Dann werd ich mal. :coder:


Cu

ssach 15. Aug 2003 13:58

Re: Programm zum knacken
 
hy,

ich wollte mal wissen wie man überhaupt einen Wert in einer Exe datei von delphi speichern kann?

Lillebrohr 15. Aug 2003 14:13

Re: Programm zum knacken
 
Guten Tag,

also ich find es ja immer wieder aufregend wie sich manche Autoren anstrengen ihr Produkt so secure wie möglich zu machen aber dennoch reicht ein 5 byte Patch aus um die vollen Funktionen zu geniesen.
Ein Beispiel dafür wäre WinRAR. Unsere gute Eugene hat einen ECCNR241 Schutzmechanismus implementiert.

Genauer gesagt Eliptic Curve Cryptography mit einem 241 bit Schlüssel welcher einem 1024 bit RSA Schlüssel gleichzusetzen ist.
Tja aber wie gesagt, Patchen ist sehr leicht bei diesem Programm.
Einen keygen hat meines Wissens erst einer hinbekommen.

Das sollte nur nochmal so zur Veranschuung dienen.

So jetzt zu ssach :

Zitat:

ich wollte mal wissen wie man überhaupt einen Wert in einer Exe datei von delphi speichern kann?
Das geht so ohne weiteres nicht. Du müsstest theoretisch alles neu compilieren.
Ich habe hier mal ein Tutorial für dich wo beschrieben wird wie man Funktionen in Applikationen mit einfügt. Sogar mit Delphi Beispiel.

Viel Spaß.


Uhmkay, jetzt muss ich mich aber echt mal an die beiden CMs, begeben.

negaH 15. Aug 2003 14:13

Re: Programm zum knacken
 
@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

negaH 15. Aug 2003 14:35

Re: Programm zum knacken
 
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

negaH 15. Aug 2003 14:38

Re: Programm zum knacken
 
Ü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

flomei 16. Aug 2003 12:03

Re: Programm zum knacken
 
@Hagen: Du bist der Verschlüsselungskönig. Schön dich zu kennen. :thuimb: 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! :D

MfG Florian :hi:

negaH 16. Aug 2003 13:08

Re: Programm zum knacken
 
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

wb32 29. Aug 2003 23:25

Re: Programm zum knacken
 
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 :)

daniel-volk 27. Sep 2003 20:48

Re: Programm zum knacken
 
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. :zwinker:

TheMiller 21. Okt 2003 23:39

Re: Programm zum knacken
 
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...

Hansa 21. Okt 2003 23:51

Re: Programm zum knacken
 
oooohhh, das da kommt ja sogar von mir. :shock: 80 DL, na klasse. Muß mich dann doch mal intensiver mit dem Thema befassen. 8)

TheMiller 21. Okt 2003 23:57

Re: Programm zum knacken
 
hm.. sorry, habe nicht alle 7 Seiten gelesen. Wir sind dann wohl den selben Weg gegangen..Naja. wie dem auch sei... ok...

kingflo 20. Okt 2005 13:58

Re: Programm zum knacken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe auch mal eines gemacht und wollte sehen, ob Ihr das auch geknackt bekommt?

Also ich denke die abfrage zu ändern bekommt Ihr hin aber mal sehen, ob mir auch jemand das Passwort sagen kann :wink:

Rastaman 20. Okt 2005 14:10

Re: Programm zum knacken
 
Ich finde das langsam ridicolo :roll:
Wieso soll ich mir die Mühe machen und das Passwort suchen, wenn ich es einfach umgehen kann?
Es macht einfach keinen Sinn und ich glaube das ist schon oft ausdiskutiert worden :wall:

kingflo 20. Okt 2005 14:16

Re: Programm zum knacken
 
mit dem Umgehen kannst du es ja auch gerne versuchen. Ist bestimmt leichter möglich nur ich hoffe nicht ganz so leicht.
Obwohl ich gerne wissen würde, ob es jemand schaft das PW zu bekommen

brechi 20. Okt 2005 16:16

Re: Programm zum knacken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi, du glaubst doch net ernsthaft, dass jemadn seine zeit opfert nen ganzen algo zu analysieren nur damit man zeigt das des teil kacke ist. Da kann ich auch nen Programm machen wo einfach ne MD5 von dem eingegeben Text mit einer festern MD5 verglichen wird und du versuchst dann daraus das richtige PW zu finden. Das ist auch zu 99.9% sicher.
Wenn man das Programm zum laufen bekommt, ohne ne Seriennummer etc. dann gilt es als geknackt.
Ganze 5 Minuten für dein Programm.

Code:
004555BC    8B83 0C030000  MOV EAX,DWORD PTR DS:[EBX+30C]
004555C2  |. BA 18574500    MOV EDX,knackmic.00455718                ; ASCII "d5dfe8c450c24eb33d620e028339321c"
004555C7  |. E8 8CECFAFF   CALL knackmic.00404258
004555CC    0F85 05010000  JNZ knackmic.004556D7                    ; hier noppen, Prüfung für OnChange des Edits
004555D2  |. 8D45 C0        LEA EAX,DWORD PTR SS:[EBP-40]
004555D5  |. 50             PUSH EAX

arnoldo 20. Okt 2005 17:55

Re: Programm zum knacken
 
Liste der Anhänge anzeigen (Anzahl: 1)
naja das pw herausfinden ist ne geduldsfrage -> habe mir daher erlaubt es in "cracked" zu ändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Seite 3 von 3     123   

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