Autor |
Beitrag |
Sebi82
Hält's aus hier
Beiträge: 9
Win XP
D7 Enterprise
|
Verfasst: Mi 31.05.06 10: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 12: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 13: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 14: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 14:15
I8N zum letzten crackme ;)
|
|
cuejo
      
Beiträge: 142
Win XP
Delphi 7 Personal und 2005 PE
|
Verfasst: Mi 31.05.06 15: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 16: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 17: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 17: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 17: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 17: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 20: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: Fr 02.06.06 00: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 09: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 16: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 21: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 21: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 22: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 16:58
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
moddin
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: Sa 10.06.06 00: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 
|
|