Autor Beitrag
P@u1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: Mi 03.03.10 23:46 
ich will ja keinen perfekten kopierschutz, nur einen relativ leichten, aber er sollte schon so anspruchsvoll sein, dass man nicht bloß eine abfrage rausnehmen muss. Dazu hatte ich halt nen paar Ideen die ich ja geschrieben habe, wenn jemand andere Ideen für einen solchen schutz hat, immer her damit plz, langsam bin ich nämlich auch der ansicht, dass mein ansatz zu kompliziert war.
Aber ich sehe im Moment keinen weg an einer hardware id vorbei, um das weitergeben zu verhindern.

Edit: zu den 2 verschiedenen hardware ids die rauskamen mit dem einen programm: kann es sein, dass das an dual-core liegt?
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Do 04.03.10 02:48 
Ich habe schon ein Mal ein Variante geschrieben, welche Funktionieren KANN, wenn man sich Gedanken macht:
  • Die Funktion F(K,X) verschlüsselt ein Bild X mit dem Schlüssel K.
  • Die Funktion G(K,X,Y) vergleicht ein Bild X mit einem Bild Y, welche mit dem Schlüssel K verschlüsselt wurden, und gibt einen Vergleichswert aus.
Dann generierst du auf jedem Rechner eine eindeutige ID, welche der Schlüssel für die Funktionen ist und lässt dir diese ID zukommen. Anschließend verschlüsselst du deine Vergleichsbilder mit der ID und sendest das Programm mit den verschlüsselten Bildern an den Benutzer.
In dem Programm werden die verschlüsselte Vegleichsbilder geladen und anschließend das zu vergleichende Bild verschlüsslet und beide in die Vergleichsfunktion gegeben. Diese gibt dann den Wert der "Gleichheit" oder was auch immer aus...

Diese Variante KANN funktionieren, sofern die Vergleichsfunktion bestimmte Voraussetzungen erfüllt, sodass man eine Verschlüsselung mit ihr nutzen kann! Außerdem ist das ganze nur eine Idee in meinem Kopf und muss daher nicht funktionieren...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 04.03.10 08:43 
Joah, und wer dann einen halben Meter Ahnung vom cracken hat, hat das Ding in 30 Sekunden ausgehebelt, weil er die Abfrage "if Vergleichswert OK " in "if Vergleichswert nicht OK" ändert. Da kann die Berechnung noch so kompliziert sein, am Ende ist da die Schwachstelle.

Ich habe das mit dem Bild hier sowieso noch nicht ganz verstanden, was das bringen soll. Hat das entschlüsselte Bild selbst eine Funktion für das Programm? :gruebel:

_________________
We are, we were and will not be.
P@u1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: Do 04.03.10 16:06 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:

Ich habe das mit dem Bild hier sowieso noch nicht ganz verstanden, was das bringen soll. Hat das entschlüsselte Bild selbst eine Funktion für das Programm? :gruebel:


Ja genau, das Bild wird vom Programm benutzt. Es ist nicht bloß für eine Sicherheitsüberprüfung da, sondern das Bild selbst wird für die Funktion des Programms benötitgt.
Ohne das Bild funktioniert es nicht.

Das Problem beim erstellen der ID ist immer noch, dass bei mir 2 verschiedene rauskommen, was vermutlich an dualcore liegt.

Edit: glaube ich hab das dual-core hiermit gelöst:
ausblenden Delphi-Quelltext
1:
SetProcessAffinityMask(GetCurrentProcess, 1);					


und wenn ich dann
ausblenden Delphi-Quelltext
1:
SetProcessAffinityMask(GetCurrentProcess, 0);					

mache ist es wieder auf beide CPUs verteilt (glaube ich zumindest)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 04.03.10 19:57 
Hey,

in dem Thread gibts ne Unit, damit kannst du die Bilder über nen Stream-Adapter laden. Der verschlüsselt und entschlüsselt das dann auch alles gleich.

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
P@u1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: Sa 06.03.10 19:13 
Ich habe mir jetzt eine eigene Verschlüsselung geschrieben, die jeden Pixel einzeln über Pixels ändert.
Allerdings gibt es ein großes Problem:

Irgendwie scheint der Befehl Scanline verrückt zu spielen, wenn ein Bild über den Pixels befehl geändert wurde.

Meine Funktion, die zwei Bilder über Scanline vergleicht erkennt schon einen SEHR großen Fehler, wenn ich folgendes mache:

zuerst lade ich in bmp und bmp2 das selbe bild rein, dann kommt nur das hier, was eigentlich NICHTS ändern dürfte:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  for i := 0 to Image2.Picture.Bitmap.Width do
  begin
    for j := 0 to Image2.Picture.BitMap.Height do
    begin
      bmp2.Canvas.Pixel[i,j]:=bmp2.Canvas.Pixel[i,j];
    end;
  end;


vor diesen befehlen hat die vergleichsfunktion die mit scanline arbeitet keinen unterschied erkannt, danach einen sehr großen, obwohl die bilder absolut identisch aussehen und sogar exakt die selbe größe haben, wenn ich sie speichere.

Kann mir das irgendjemand vielleicht erklären bitte?
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Sa 06.03.10 19:19 
Welches Dateiformat?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
P@u1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 117



BeitragVerfasst: Sa 06.03.10 19:25 
Bitmap

Edit: hab gerade mal die md5 hashs überprüft, sind unterschiedlich, obwohl die bilder exakt gleich aussehen und eigentlich jeder pixel nur auf seinen eigenen wert gesetzt wurde.........

Ich versteh das nicht!

Und wie kann ich dieses Problem lösen?

Edit2:

Hab vor dem Vergleich diese Zeilen benutzt:
ausblenden Delphi-Quelltext
1:
2:
  bmp1.PixelFormat:=pf24bit;
  bmp2.PixelFormat:=pf24bit;


Jetzt werden die Bilder wieder als gleich erkannt!

Verstehen tu ichs aber immer noch nicht!