AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Seriennummer Sicherheit

Ein Thema von DelphiSecurity · begonnen am 26. Mai 2011 · letzter Beitrag vom 4. Feb 2012
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Seriennummer Sicherheit

  Alt 27. Mai 2011, 19:09
Ich mache es so: Ich liefere mit Dongle aus. Manche Kunden lehnen Dongle jedoch kategorisch ab.

Dann mache ich es so:
Setup speichert einen Zufallsstring. Das Programm liest den String und möchte einen GegenCode zur Aktivierung. Diesen gibt es bei uns per Mail.

Nachteil: Der GegenCode ist auf der Kiste des Anwenders und wer ihn finden will, findet ihn auch.
Ein Hacker sucht aber normalerweise nur ein paar Tage, dann hat er kein Lust mehr.

Dein Programm muß so gestaltet sein, daß es diese Tage übersteht. Dazu gehört (mindestens), daß alle die Aktivierung betreffenden strings im Programm hexadezimal stehen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#22

AW: Seriennummer Sicherheit

  Alt 27. Mai 2011, 22:50
Was meinst du mit hexadezimal?
Mal an einem Codebeispiel gesehn.

Wenn es wirklich so einkompiliert wurde, dann findet man das schneller, als wenn es irgendwo binär kodiert wurde, da eine reihe von hexadezimalen Zeichen zwischen den vielen Binärdaten schön auffällt.
Abgesehn davon, daß Hexadezimal doppelt so lang ist und somit doppelt so leicht entdeckt werden kann. ('nen billiger XOR-manipulierter Wert fällt dagegen viel weniger auf, wenn überhaupt)

Installierst du dann das Programm selber?
Wenn der String irgendwo von dem Setup gespeichert wird und wenn du da nicht danebenstehst/zuguckst, dann dauert es keine 10 Sekunden und der String ist gefunden >>> brauch mir ja nur Loggen lassen, was dein Setup wo hinschreibt. (Sysinternals)
Wenn man dagegen den "String" aus partiell statischen Zufallswerten des Systems berechnet wird, dann muß man nichts verstecken. (Seriennummer der HDD, CPU und Co.)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Mai 2011 um 22:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#23

AW: Seriennummer Sicherheit

  Alt 27. Mai 2011, 22:58
Ich habe einige Produkte im Markt bei denen jede Kundenversion stark personalisiert ist. Die Arbeit die dafür in die Build-Umgebung investiert werden musste, hat sich rentiert: Selbst von der Soft die am längsten so ausgeliefert wird, gibts keine geleakten Versionen seit diese Strategie gefahren wird. Und wenn mal eine auftauchen sollte, wäre es relativ einfach, herauszufinden wer dafür verantwortlich ist (ja, ich weiss, zur Rechenschaft ziehen könnte trotzdem illusorisch sein, aber...). Durch Continuous Integration ist es ausserdem selbst dann aufwendig, Schutz von Nutzlast zu trennen wenn man doch mehrere Versionen eingesammelt hat und die vergleichen will. Ist aber natürlich nix für die eigene Hobby-Software, dafür steckt dann doch ein bissl viel Arbeit drin
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 12:18
Zitat:
Was meinst du mit hexadezimal?
ich habe es so, ist das leicht zu erkennen?

const
sRef: array [1..52] of Byte =
($69, $63, $72, $6F, $73, $6F, $66, $74, $5C, $57,
$69, $6E, $64, $6F, $77, $73, $5C, $43, $75, $72,
$72, usw..

die Entschlüsselungsroutine läuft über Ord xor Ord.

Zitat:
Seriennummer der HDD, CPU und Co.)
Der Gegencode muß doch auch irgendwo gespeichert werden.
Nutzt das denn etwas ?
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#25

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 12:27
Dazu gehört (mindestens), daß alle die Aktivierung betreffenden strings im Programm hexadezimal stehen.
Totaler Blödsinn!!!

Mach mal ein
Delphi-Quellcode:
const
  sRef: array [0..21] of Byte =
($69, $63, $72, $6F, $73, $6F, $66, $74, $5C, $57,
$69, $6E, $64, $6F, $77, $73, $5C, $43, $75, $72,
$72, $00); // "usw" abgeschnitten..

begin
  writeln(pchar(@sRef));
  readln;
end.
Begründung
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#26

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 12:50
jupp, beide Zeichenfolgen sehen im Kompilat (der EXE) genau gleich aus.
Delphi-Quellcode:
sRef: array [1..22] of Byte = ($69, $63, $72, $6F, $73, $6F, $66, ...);
// enspricht
sRef: AnsiString = 'icrof...';
Und wenn man diesen Text jetzt irgendwie nochmal umwandelt (z.B. über XOR), dann steht der Text unverschlüsselt im RAM und man kann ihn von da auslesen.

Darum sollte man sowas niemals entschlüsseln.
Was dagegen schonmal einen Hauch sicherer ist, wenn man das eingegebene Passwort/Serial verschlüsselt und dann hiermit vergleicht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 12:55
Zitat:

Totaler Blödsinn!!!
Aua !!

Immer noch besser als

OpenKey('Dingens-Software.de', false)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#28

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 12:57
Tut mir Leid, aber was ist, das ist!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 13:05
Dann kann ich meine Aladdin Dongle auch gleich wegschmeißen, der Vendorcode von denen steht genau so in der Unit, die man einbinden soll.

Delphi-Quellcode:
const
  vendor_code: array[1..519] of Byte =
(
  $c8, $7a, $9c, $29, $87, $ff, $40, $f3,
  $47, $a0, $83, $2a, $eb, $df, $d0, $88,
  $08, $4d, $c3, $72, $91, $f3, $21, $cf,
  $65, $a8, $61, $ff, $40, $1c, $05, $b0,
  $58, $09, $e2, $f3, $25, $ee, $ee, $4f,
  $67, $a2, $e0, $6a, $18, $b7, $2f, $67,
  $59, $81, $50, $4e, $c9, $7c, $38, $15,
  $df, $0d, $04, $30, $96, $d7, $55, $6f,
  $83, $9b, $4f, $81, $b4, $8e, $c7, $21,
  $eb, $27, $8f, $c6, $28, $0c, $b5, $0e,
  $42, $c0, $c3, $7d, $4d, $67, $99, $87,
  $6b, $06, $4b, $24, $cb, $28, $41, $2e,
  usw.. );

himitsu, Aphton, trotzdem Danke für eure Hinweise.

showmessage (pchar(@zRef)) macht mich fertig..

Geändert von Bjoerk (28. Mai 2011 um 14:05 Uhr) Grund: showmessage
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#30

AW: Seriennummer Sicherheit

  Alt 28. Mai 2011, 16:24
Ich habe das bei mir so gelöst:

Kunde kauft Software und bekommt einen Aktivierungsschlüssel per Mail. Damit kann er nun einen Account erstellen oder einen vorhandenen verlängern. Bei jedem Programmstart loggt sich der Kunde ein.
Einige werden jetzt sagen und was passiert, wenn der Server ausfällt? Nach jedem Login wird auf dem lokalen PC eine Lizenzdatei erstellt, die bei mir X Tage gültig ist. So hat man genügend Zeit um Serverprobleme zu lösen. Man könnte natürlich auch die EXE so modifizieren, dass man direkt eingeloggt ist. Dazu prüfe beim Programmstart ob die initialisierten Werte passen. Eine weitere Möglichkeit wäre ein Serveremulator, dazu gibt es weitere Möglichkeiten der Absicherung. Ich will jetzt aber hier nicht alles im Detail erklären.

Hier noch ein paar Tipps:
  • Benutze keine Aussagekräftigen Prozeduren/Variablen Namen
  • Programmiere richtig aber "schluderig" xD => Spagetticode
  • Wiederhole Prüfungen (gerne auch an verschiedenen Stellen)
  • Vermeide Fehlermeldungen a la Seriennummer ist falsch (Hacker weiß dann sofort wo er suchen muss )

Und das wichtigste: Alles dokumentieren, spätestens nach 3 Monaten weißt du nicht mehr wie es funktioniert!
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.
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