| Autor |
Beitrag |
ChaseX
      
Beiträge: 23
|
Verfasst: Do 04.01.07 21:37
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); begin Keys; with TRegistry.Create do begin try RootKey := HKEY_CURRENT_USER; OpenKey('\Software\Test\', True); if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) or if not (ReadString('Check')=Ka) and (ReadString('Go')=Sa) then begin ShowMessage('Bitte Registrieren Sie dieses Programm!Eine Datei zum registrieren liegt bei'); timer11.Enabled :=true; end; finally Free; end;
end; |
das komische ist, dass er mir bei
Delphi-Quelltext 1: 2: 3:
| timer11.Enabled :=true; end; finally |
nach dem end-simikolon anzeigt'Operator ist auf diesen Operandentyp nicht anwendbar' und wenn ich das simikolon wegnehmen zeigt ers mir beim finally an..
Ka und Sa haben übrigens andere Namen, dh. ich habe einfach alle Namen durch Ka bzw Sa ersetzt(normalerweise nach dem prinzip: ka-sa; kb-sb; kc-sc...usw.)
Die sind aber auch alle als string deklariert und enthalten eine Buchstabenfolge;)
Und 'Keys' ist die Prozedur wo die variablen ihren 'wert' zugeteilt bekommen..
Ich kann mir nocht erklären, wie der Fehler zustande kommt..ach und wo wir schon dabei sind, ist es richtig, dass dieses if-not-and-or-wirrwarr nur dann die anweisung ausführt, wenn irgendein mit 'and' verbundenes 2er-Paket zutrifft?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Do 04.01.07 21:40
Der ganze If-Wirrwar kann gar nicht funktionieren. Du darfst nicht innerhalb einer If-Bedingung nochmal eine stellen. Überdenke bitte deine Vorgehensweise. Was genau willst du mit Ka und Kb, etc. machen?
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: Do 04.01.07 22:13
Ich möchte damit einfach nur keys abgleichen..dh das programm hat sagen wir mal ums einfacher zu machen 10 verschieden 'Aktivierungskeys' und dazugehörige 'Registrierungskeys' gegeben. diese Prozedur soll nun überprüfen, ob ein solcher key (zb Ka) schon in der registry steht und ob der dazugehörige Registrierungskey auch dort steht(muss natürlich ein bestimmter sein, aber der wäre dann ja bei dem beispiel als Sa - oder nenn es wie du willst- gespeichert).
Wenn dies so ist macht die prozedur nichts und das programm läuft also weiter, aber wenn die 2 keys nicht drinstehen, also das programm nicht registriert ist, wird es beendet(das macht der timer) und zeigt eine fehlermeldung mit dem hinweis auf die Möglichkeit es zu registrieren.
War das verständlich?
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Do 04.01.07 22:19
Erstens braucht es nur ein if am Anfang. Zweitens solltest du Klammern setzen if not (...) or not (...) or not (...) then. Ich weiss nicht was Ka und Sa ist, aber ich nehme an, du schreibst dort die verschiedenen Möglichkeiten ein.
Du musst einfach eines wissen: Jeder, der mit einem Hex-Editor umgehen kann, wird alle Keys aus deinem Programm extrahieren können (innert Minuten).
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: Do 04.01.07 23:38
Ah okay..ich denke es hat sich erledigt..habe klammern gesetzt und statt
Delphi-Quelltext 1:
| if not ReadString('bla')=sa |
habe ich if ReadString('bla')<>sa
Vielen Dank für die Hilfe..Ob wirklich alles einwandfrei klappt werde ich dann wohl nach der Arbeit morgen testen.
Achja und wegen dem Hex-editor: 1. Glaube ich dass sich damit wenige Leute auskennen für die das Programm interessant wäre,
2.Wenn das jemand, der sich mit solchem zeug auskennt wirklich will, knackt der, glaube ich, alles(es gibt schließlich für bekannte Programme sehr bald nach release cracks und sowas) und schlussendlich 3.(und wahrscheinlich der hauptgrund): ich kenne mich mit verschlüsselungen im Programm und ähnlichem nicht aus(noch nichtmal mit sonem Hex-Editor:( )und da ich es für nicht so furchtbar wichtig halte, habe ich da im Moment auch nicht so die Lust, geschweige denn Zeit um das zu lernen.
Auch wenn ich es auf jeden Fall lernen möchte!
Also noch einmal Danke
Euer ChaseX
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Fr 05.01.07 00:13
Naja, wenn man das Programm debuggen und Cracken muss, ist es eine Hürde mehr. Die Datei kurz in einem Editor anschauen hingegen ist leicht gemacht.
Ich sag's mal so: Die meisten Leute, die hier am Adventsgewinnspiel teilgenommen haben würden die Schlüssel rauskriegen. Einen Crack herzustellen können hier jedoch die wenigsten.
Wenn du also die Schlüssel als md5-Codes speicherst und damit vergleichst, ist die Chance, dass dein Programm geknackt wird, schon bedeutend kleiner.
Wie auch immer. Ich wollte nur darauf aufmerksam machen 
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: Fr 05.01.07 19:52
ja und da sehen wir den springenden punkt..was ist ein md5-code?? 
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Fr 05.01.07 19:57
MD5 ist eine Hash-Funktion: siehe hier
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: Fr 05.01.07 21:13
hmm hab mir dieses md5 ma angeguckt und mir auch die dateien auf www.fichtner.net/delphi/md5.delphi.phtml runtergeladen..aber ich versteh nich wie ich sowas in mein programm einbauen soll..wenn ich reinschreib, das er die strings die ich als key nehme in hashs umwandelt, dann kann man die eigentlichen keys beim debuggen doch auch sehen
Oder muss ich meien strings mit diesem md5-programm umwandeln und dann ins programm schreiben dass er die umgewandelten hashs nehmen soll(zb. label1.text := md5umwandeln/?/)..
Kann mir vielleicht jemand mal ein kleines beispiel zeigen?aber bitte dazu sagen ob mit oder ohne verwendung der md5.unit;)
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: So 07.01.07 16:13
Nur ein kleines Beispiel;) Bitte..
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 07.01.07 16:18
Hallo!
Das Vorgehen ist so:
Du hast den Key, den Du in der Registry suchen willst. Statt nun aber in Deinem Programm diesen Key abzulegen, legst Du dort nur den MD5-Hash davon ab. In Deinem Programm taucht der Key also gar nicht auf, sondern nur sein Hash. Wenn Du nun den Key in der Registry prüfen willst, schaust Du, ob dessen MD5-Hash mit dem Hash in Deinem Programm übereinstimmt.
Grüße
Christian
P.S.: Du findest übrigens auch hier im Forum MD5-Units.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 07.01.07 16:25
Vielleicht hilft beim Thema md5 ja auch dieser Thread vom letzten Gewinnspiel weiter. 
_________________ We are, we were and will not be.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.01.07 16:26
Und du findest hier im Forum auch Beispiele. Da es vielleicht nicht am Titel ersichtlich ist, dass dort auch Programme stehen, die MD5 benutzen, hier ein Link: www.delphi-forum.de/...03&highlight=md5
// EDIT:  Mein Link ist auch der zum Gewinnspiel, allerdings zur Auflösung des Multi-Level-Rätsels...
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: So 07.01.07 18:49
vielen dank für die Hilfe, aber so richtig klappt das nicht..(wenn ich zB in ne Label-Prozedur schreibe: Label1.Caption := MD5Print(MD5String()) wird sofort gemeckert Undefinierter Bezeichner:MD5Print..
Und dann hätte ich noch eine Frage: Wenn der Hash doch im Porgramm hinterlegt ist und auch in der Registry als Hash abgespeichert wird, dann kann man doch auch einfach nach dem Hash suchen und den in die Registry kopieren.. oder nicht?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 07.01.07 18:51
ChaseX hat folgendes geschrieben: | | Wenn der Hash doch im Porgramm hinterlegt ist und auch in der Registry als Hash abgespeichert wird, dann kann man doch auch einfach nach dem Hash suchen und den in die Registry kopieren.. oder nicht? |
Du speicherst in der Registry den richtigen Key, im Programm den Hash.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ChaseX 
      
Beiträge: 23
|
Verfasst: Mo 08.01.07 15:12
Und zu dem Problem mit der Fehlermeldung?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.01.07 15:32
Zeig mal ein wenig mehr Deines Quelltextes und sage auch, welche MD5-Unit Du benutzt.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 08.01.07 15:46
Wie wärs, wenn du in die uses die Unit MD5 reinschreibst? Ich nehme mal an, das hast du nicht getan, denn eigentlich ist das die einzige Möglichkeit, die mir einfällt, warum MD5Print undefiniert sein könnte.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.01.07 15:51
Aber dann würde MD5String es ja auch nicht tun 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 08.01.07 15:52
Schon, aber der entsprechende Fehler wird ja erst danach angezeigt, deshalb hat er den vermutlich noch nicht gepostet...
|
|