Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Variable vor Manipulation durch Angreifer schützen?
*neo*
myCSharp.de - Member



Dabei seit:
Beiträge: 298

Themenstarter:

Variable vor Manipulation durch Angreifer schützen?

beantworten | zitieren | melden

Hallo zusammen und ein frohes neues Jahr!

ich habe nun meine Lizenzabfrage in mein Programm eingebaut. Das Problem ist natürlich, ich bin über einen anderen Thread darauf gestoßen, dass man nach der Lizenzprüfung einen gewissen Status einer Variablen hat. D.h. entweder ist die Lizenz gültig oder eben nicht, true oder false! Solange keiner ein Speicheranalyse-Programm vor meines schaltet, ist das grundsätzlich aus meiner Sicht kein Problem. Wenn aber so ein Programm läuft, dann kann die Variable, die entscheidet ob Vollversion oder Demo, geändert werden und die Lizenzprüfung war für die Katz.

Gibt es da andere Ansatzpunkte oder neue Erkenntnisse? Hier im Forum habe ich leider keine gefunden.

Kann man ihrgend wie prüfen ob ein anderes Programm den Speicher meines Porgrammes nutzt?

Grüße
private Nachricht | Beiträge des Benutzers
bredator
myCSharp.de - Member



Dabei seit:
Beiträge: 357

beantworten | zitieren | melden

Ich glaube kaum, dass so etwas möglich ist. Um den Speicher auszulesen, muss man nicht über dein Programm gehen. Woher soll es dann also wissen, dass ein anderes Programm gerade darauf zugreift? Insofern lässt sich auch eine Manipulation nicht verhindern. Zum Thema, wie man Assemblys vor Manipulation schützt bzw. vor dem Einsehen des Codes gibt es aber ein paar Themen hier.
private Nachricht | Beiträge des Benutzers
iSliver
myCSharp.de - Member



Dabei seit:
Beiträge: 57

beantworten | zitieren | melden

Was nicht schlecht ist, die Lizenz beinhaltet einen KEY um das Hauptprogramm zu entschlüsseln und dann lädst das einfach, wenns nicht klappt ist die Lizenz/der Key ungültig.
Dann bist du nicht nur auf Flags angewiesen.

/edit: ist natürlich auch kein vollständiger Schutz, kombiniert mit diversen Anti Debugger Methodiken aber schon recht effektiv gegen Einsteiger.
Aber beim JIT Compiler gilt ja leider wer zuerst hookt gewinnt.
Es gibt aber auch schon fertige Lizensierungssysteme.(online wie offline).
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von iSliver am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.390

beantworten | zitieren | melden

Sowas hatten wir schon zig Male hier im Forum und das Fazit ist: nein es geht nicht.
Spätestens im Speicher kann man alles manipulieren und man kann auch nicht prüfen, ob der Speicher von einer anderen Anwendung manipuliert wird.

Daher ist es vor allem bei Spielen so, dass bestimmte / wichtige Spielwerte an verschiedenen Stellen gespeichert werden. Das Programm überwacht Veränderungen und wenn der Wert zweier Soll-Gleicher Zellen sich dann doch unterscheiden; dann wurde gemogelt.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo *neo*,
Zitat
Sowas hatten wir schon zig Male hier im Forum und das Fazit ist: nein es geht nicht.
dem schließe ich mich an. Es gibt keinen Schutz gegen Cracker.

Außerdem wollte ich noch darauf hinweisen, dass die Manipulation des Speichers nur eine Möglichkeit ist. Noch leichter (und wohl auch üblicher) ist es, den Code des Programms so zu ändern, dass die Abfrage der Variable negiert wird. Auf IL-Code-Ebene muss man z.B. nur die Anweisung OpCodes.Brtrue durch OpCodes.Brfalse ersetzen.

herbivore
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo *neo*,

neu in .NET 4.5 ist die SecureString -Klasse. Zwar bietet die Klasse nur bedingt Schutz und eignet sich nur für Texte, dennoch besser als nichts.

Wie schon meine Vorposten sagen, gibt es wenig effektive Möglichkeiten sich vor Manipulationen zu schützen, weil generell alles manipulierbar ist. Den Angreifenden Hürden zu stellen ist wohl das beste Mittel. Weiteres findest du in [FAQ] NET Assembly vor Disassembling schützen (Obfuscator).

Neben Obfuscatoren gibt es noch Packing. Stichwort: .NETZ.

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von zero_x
neu in .NET 4.5 ist die SecureString -Klasse.
Nö, die gibt's schon seit 2.0.
private Nachricht | Beiträge des Benutzers