| Autor | 
Beitrag | 
Sebi82 
Hält's aus hier
 
Beiträge: 9 
 
Win XP 
D7 Enterprise 
 | 
Verfasst: Mi 31.05.06 09:19 
 
Hi!
 
 Es gibt noch eine Möglichkeit, die Schwachstelle JE (Jump if equal) in JNE (Jump if not equal) zu umgehen: Man sollte den Hash des Passworts einfach in viele Stellen des Codes mit einbinden. Bespiel:  Wert:=andererWert * (HASHeingabe/HASHvorgabe) .Bei korrekter Eingabe passiert nichts. Dies soll nur ein anschauliches Beispiel sein. 
 
 Mir ist natürlich bewusst, dass damit eine *versehentliche* Falscheingabe des Passworts das Programm zunichte macht, aber ich bin mir sicher, dass man da auch irgendeine moderate Lösung findet! Hab nur gerade keine Zeit darüber nachzudenken... 
 
 | 
 | 
JayEff 
        
 
Beiträge: 2971 
 
Windows Vista Ultimate 
D7 Enterprise 
 | 
Verfasst: Mi 31.05.06 11:09 
 
Hm klingt gut...! Wie wärs damit:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7:
  				 | 									i:=2*(hashEingabe div hashKorrekt); try    (FindComponent('Form'+IntToStr(i)) as TForm2).Show;   Form1.Hide; except   Showmessage('Falsches Passwort!'); end;					 				 | 			 		 	  
Is das ein Ansatz oder hat das die gleiche Schwachstelle?  
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
 [>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
  
 | 
 | 
Hack Gott 
        
 
Beiträge: 409 
 
Windows Vista 
Delphi 2005 Personal, Delphi 7 
 | 
Verfasst: Mi 31.05.06 12:17 
 
Ich hab mich mal kurz hingesetzt und auch einen kleinen Passwortdialog zusammen geschustert, schaut mal ob ihr des passwort ändern, oder zumindestens knacken könnt.
 
 Ich bin gespannt. 
Einloggen, um Attachments anzusehen!
 
 
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Mi 31.05.06 13:07 
 
Wie lame ist das denn? Aus dem "je" ein "jmp" zu machen,, um den Hash zu umgehen? 
 oh oh :wink: 
 
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Mi 31.05.06 13:15 
 
I8N zum letzten crackme ;) 
 
 | 
 | 
cuejo 
        
 
Beiträge: 142 
 
Win XP 
Delphi 7 Personal und 2005 PE 
 | 
Verfasst: Mi 31.05.06 14:59 
 
Gibt es denn eine Möglichkeit einen Vergleich von zwei Werten - sei es nun simpler Text, ein Hash oder was auch immer - so zu gestalten, dass ein cracker nicht mehr diese anscheinend doch sehr simple Methode (= durch <> ersetzten) benutzen kann? Ich weiß, dass man keine Passwortabfrage wirklich 100%ig sicher machen kann, aber wenn ich sehe, dass ihr diese Programme alle gecrackt habt, dann gibt mir das doch zu denken. 
_________________ Computer sind dumm, aber fleißig. Deshalb arbeite ich so gerne damit.
  
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Mi 31.05.06 15:33 
 
Alles was auf Softwarebasis gelöst wird, wird auch auf Softwarebasis ausgehebelt. Punkt!
 Das Problem ist ja, dass Du immer etwas vergleichen musst, also kann ich das 
 
 // asm
 cmp realserial, fakeserial
 je registration_complete
 //
 
 immer patchen (unelegant, wie ich immer noch finde)..
 Sollte es so eine Lösung geben, dann.. *NEIN* gibts nicht. Wie gesagt - Punkt! Aus!
  :mahn: 
 
  :wink:
 rgs rizla 
 
 | 
 | 
Jakob Schöttl 
        
 
Beiträge: 929 
Erhaltene Danke: 1 
 
 
Delphi 7 Professional 
 | 
Verfasst: Mi 31.05.06 16:10 
 
Ach jetzt hab ichs verstanden
 o_o Das ist ja fies!
 
 Aber ziemlich unwarscheinlich, dass es jemand schafft. 
 
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Mi 31.05.06 16:13 
 
Aber ziemlich unwahrscheinlich das jemand was schafft??  :?!?: 
 
 | 
 | 
Horschdware 
        
 
Beiträge: 744 
Erhaltene Danke: 54 
 
Win XP Pro, Win 7 Pro x64 
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3 
 | 
Verfasst: Mi 31.05.06 16:33 
 
man muss es dem cracker halt wie gesagt insofern schwer machen, dass er sich zum einen durch spaghetticode durchwühlen muss und zum anderen mehrfach auf die passwortabfrage trifft. d.h. im programm gibt der benutzer einmal das passwort ein und das programm prüft das ganze dann an mehreren stellen ab.
 man kann das ganze nicht verhindern - aber man kann es schön schwer und umständlich machen 
_________________ Delphi: XE -  OS: Windows 7 Professional x64
 
 | 
 | 
cuejo 
        
 
Beiträge: 142 
 
Win XP 
Delphi 7 Personal und 2005 PE 
 | 
Verfasst: Mi 31.05.06 16:38 
 
 Spaceguide hat einen interessanten Alogo konstruiert, der  Zahlen ohne if oder ähnliche Vergleiche sortiert! Ich hätte nicht gedacht das sowas möglich sei. Vielleicht schafft der ja sowas.     
_________________ Computer sind dumm, aber fleißig. Deshalb arbeite ich so gerne damit.
  
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Mi 31.05.06 19:55 
 
Ja sicher, das ist schon nicht so einfach, es dem cracker schwer zu machen, außer man nimmt zum proggen visual basic :mrgreen: 
 ich sag mal so: beim crackme von Hack Gott wars in etwa so: 
 1. ollydb öffnen, 
 2. alle referenced strings anschauen, 
 3. doppelklick auf "falsch",
 4. den call davor tracen, 
 5. irgendwann mal auf edx achten
 6. et voila - passwort da!
  ne sache von 1 minute.
 *sorry* hack gott, aber es reversern schwer zu machen, ist schwer. 
 ist halt keine 5 minuten sache. 
 eine andere sache wäre, softice und olly gar nicht erst zuzulassen. 
 aber dann gibts auch wieder patches, ist halt wie gesagt - alles software. 
 ich finde, die diskussion führt ins leere, die frage ist eher, kann man gute freeware schreiben. 
 Ein indianischer Spruch dreht sich irgendwie so: 
 der rote Mann ist reich, wenn er geschenke machen kann, 
 der weiße Mann, wenn er anhäufen kann. 
 Ich weiß, wir leben nicht im Lande der Apachen und auch nicht im Sozialismus, 
 aber wenn man kreativ und begabt ist, sollte man andere Leute daran teilhaben lassen, so seh ich das.
 :rizla: 
 
 | 
 | 
JayEff 
        
 
Beiträge: 2971 
 
Windows Vista Ultimate 
D7 Enterprise 
 | 
Verfasst: Do 01.06.06 23:03 
 
Letzte möglichkeit: Verschlüssle das komplette Programm und mach daraus eine "Selbstextrahierende" Datei, soll heissen: Man gibt den Schlüssel ein, und das Programm wird entschlüsselt, ganz gleich, ob der Schlüssel richtig oder falsch ist. Problem dabei ist das Verschlüsselungsverfahren... Möglich sind natürlich sowohl symetrische als auch asymetrische... ein Onetimepad-style kommt nicht in Frage, darum sind wohl die asymetrischen interessanter ... naja... da können sich dann die Kryptographen austoben. Ich glaube mich zu erinnern, dass es hier mal ein Freeware prog gab, das jede beliebige Exedatei verschlüsselte und beim starten wurde ein Passwort dialog angezeigt.... *hmm...* 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
 [>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
  
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Fr 02.06.06 08:18 
 
Vorsicht    
	   JayEff hat folgendes geschrieben: | 	 		  |  Man gibt den Schlüssel ein, und das Programm wird entschlüsselt, ganz gleich, ob der Schlüssel richtig oder falsch ist. Problem dabei ist das Verschlüsselungsverfahren...  | 	  
Das Problem liegt hierbei ganz woanders: Wird das Programm mit dem falschen Schlüssel decodiert und ausgeführt, kann das unter Umständen ziemlich böse Folgen haben (u.U. dass man sich den Rechner zerschrottet!). Der Code, der dann nämlich im Speicher ist, kann ja sonst was tun (auch wenn es durch den falschen Schlüssel scheinbar nur Müll ist, irgendwas macht die *sinnlose* copefolge schon *g*). Ich hatte das mal, als ich vor etlichen Jahren mit Assembler angefangen hab - ich habs abschließende int20 resp. 4c@21    vergessen, das programm hat auch schön "hello world" ausgegeben, aber leider auch gleich 's bios zerschossen.     
:rizla:  
 
 | 
 | 
JayEff 
        
 
Beiträge: 2971 
 
Windows Vista Ultimate 
D7 Enterprise 
 | 
Verfasst: Fr 02.06.06 15:36 
 
Pech für den Cracker, der versucht hat, das Programm zu öffnen... 8(
 Naja.. Muss man halt noch nen Passwort bestätigen Dialog einfügen. :/ 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
 [>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
  
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Fr 02.06.06 20:34 
 
	   JayEff hat folgendes geschrieben: | 	 		  | Pech für den Cracker, der versucht hat, das Programm zu öffnen...  | 	  
Und Pech für den User, der sich vertippt hat!     
_________________ if you have what they want - they'll find a way to take it (bruce sterling)
 WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
  
 | 
 | 
Born-to-Frag 
        
 
Beiträge: 1094 
 
Win XP SP2, Win 2000 SP4 
Delphi 7, 2k5 
 | 
Verfasst: Fr 02.06.06 20:58 
 
Aber so macht es doch z.B. WinRAR: Man gibt ein Passwort ein, es wird extrahiert und danach wird die CRC-Summe mit der verglichen die in dem Archiv angegeben wird. Und dann gibt es erst eine Meldung aus "wrong password?".
 
Nervt echt bei großen Archiven    
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum. 
 Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
  
 | 
 | 
rizla 
        
 
Beiträge: 417 
Erhaltene Danke: 2 
 
XP 
FPC mit Lazarus 
 | 
Verfasst: Fr 02.06.06 21:16 
 
ja, kann man ja machen. aber dann muss auch eine crc routine rein - aber davon wurde bis jetzt noch nicht gesprochen   
so, muss nun feiern
 schönes we allen
 :rizla:  
_________________ if you have what they want - they'll find a way to take it (bruce sterling)
 WOW - 10 JAHRE Mitglied beim Delphi-Forum. Wie die Zeit vergeht, Freunde.
  
 | 
 | 
JayEff 
        
 
Beiträge: 2971 
 
Windows Vista Ultimate 
D7 Enterprise 
 | 
Verfasst: Sa 03.06.06 15:58 
 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
 [>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
  
 | 
 | 
moddin 
        
 
Beiträge: 75 
 
WinXP Pro 
Delphi 7 Enterprise ;-) 
 | 
Verfasst: Fr 09.06.06 23:51 
 
Lösungsansätze :
 
Zeiger und Zeigervergleiche anstatt if (lstrcmp etc)
 und diese Prüfvorgange tausendmal (nicht als proceduraufruf
 sondern im quelltext direkt 1000 mal    )
 CRC selbstcheck ob verändert wurde
 Edit : Ach ja Compileroptimierungen ausschalten,Die 1000Zeilen Procedur immer mit sinnlosen
 if bedingungen (erzeugen immer "jmp"s) füllen
 NAhc leute    
 
 | 
 |