Externe Files einlesen VB.net

G

Gast1697188204

Guest
Hi Leute,

mal wieder eine Frage meinerseits ^^

Ich beschäftige mich gerade mit Hardware IDs und um Legitimierungen von Programmen über das Auslesen der HardwareID.

Ich habe einen sehr einfachen Code, der funktioniert aber nur für eine HardwareID und ich würde gerne mehrere "einstellen" können. Am liebsten würde ich gerne die HardwareIDs zum Anfang erstmal in einem Textdokument speichern, auf meinen Server hochladen und dann soll das Programm das dann auslesen udn wenn die ID dort auch eingetragen ist, dann soll sich das Programm öffnen, wenn sie es nicht ist, dann soll es eine Fehlermeldung geben.

Mein Problem ist zurzeit das mit dem Server. Ich weiß, alles unsicher, usw. aber man muss ja irgendwo anfangen :D

Code:
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If My.Computer.Info.TotalPhysicalMemory & My.Computer.Info.TotalVirtualMemory & My.Computer.Info.OSPlatform & My.Computer.Info.OSFullName = "****************************************" Then
            Form3.Show()
            Me.Close()
        Else
            MsgBox("STOP!", MsgBoxStyle.Critical, "HWID UNGÜLTIG!")
        End If
    End Sub
End Class

Kann mir da jemand helfen?

Danke im Vorraus, Dash.

Dash.
 
Eine eigentlich recht einfache Lösung hierfür wäre ein Webservice. Du schickst dem Webservice deine Hardware ID zur Prüfung und der sagt deinem Programm dann, ob die ID in Ordnung ist. Die gültigen IDs kannst du dann auf dem Server in einer Datei oder Datenbank speichern. Mit .NET lassen sich recht leicht Webservices entwickeln. Das allein ist zwar auch kein 100% sicheres Verfahren, aber besser als ein Download der ID-Datei, in der alle gültigen IDs stehen ;-)
 
Allerdings solltest du eher das Board als den Speicher als ID nehmen. Der Virtuelle Speicher ändert sich ja schon, wenn die Größe der Auslagerungsdatei verändert wird und RAM wird auch öfters mal getauscht. Genauso ist die OS Bezeichnung beim Update auf Win10 futsch.
 
Okay, vielen Dank schon mal.
Ja, das mit der HardwareID bin ich gerade am überarbeiten, das ist mir auch aufgefallen ^^

Wie kann man denn umsetzen, dass das Programm eine Rückmeldung zum Server kriegt, ich finde da irgendwie keinen Anfang :/
 
Okay, vielen Dank schon mal.
Ja, das mit der HardwareID bin ich gerade am überarbeiten, das ist mir auch aufgefallen ^^

Wie kann man denn umsetzen, dass das Programm eine Rückmeldung zum Server kriegt, ich finde da irgendwie keinen Anfang :/

Die einfachste Möglichkeit wäre ein HTTP-Request. Die Rückmeldung vom Server muss da natürlich auch auf dem Server implementiert werden (z.B. mittels PHP).
 
Allerdings sollte man das vielleicht gleich über HTTPS laufen lassen, sonst kann sich ein anderes Programm einfach dazwischen schalten.
 
Dürfte im dem Fall ziemlich egal sein. Besser geschützt vor Manipulationen ist das Verfahren deshalb auch nicht.
 
Ich habe dir mal eben ein kleines Beispiel für einen Webservice zusammengekloppt. Die Solution besteht aus drei Projekten:

- VerificationService: Der eigentliche Webservice
- ServiceHost: Selfhosting-Anwendung für den WS
- DemoApp: Client-Anwendung, die den WS verwendet.

Normalerweise wird so ein Webservice von einem Webserver gehostet (z. B. Windows Server mit IIS). Da man dazu aber eine entsprechende Infrastruktur benötigt, habe ich eine kleine Selfhosting-Anwendung hinzugefügt, die den WS als Konsolenprogramm hostet. Das ist so nicht praxistauglich, zum Testen reicht das aber.

Das ist jetzt alles recht quick & dirty und sollte so nicht produktiv genutzt werden. Auch würde ich statt der Textdatei eine richtige Datenbank einbinden, das macht die Verwaltung der IDs einfacher und der WS kann die IDs dynamisch zur Laufzeit abfragen. In meinem Beispiel wird die Textdatei mit den gültigen IDs nur beim ersten Start eingelesen, d. h. bei Änderungen muss die Anwendung jedes Mal neu gestartet werden.

Btw: Das ist jetzt zwar alles in C# geschrieben, geht aber auch mit VB. Meine VB-Kenntnisse sind nur ein wenig eingerostet, da war es schneller, das in C# zu machen ;-)

Noch ein Hinweis zur Sicherheit: Wenn das eine Kopierschutzmaßnahme sein soll, dann ist die nicht besonders wirkungsvoll. Zum einen kann man die Prüfung einfach aus dem Programm herausnehmen (Cracken), zum anderen kann man den Verifikationsservice leicht nachbauen. Gegen ersteres kann man sich eigentlich gar nicht wirklich schützen, beim WS kann man statt eines Boolean einen Hash berechenen, der mit dem lokalen Hash übereinstimmen muss. So muss der Angreifer zumindest das Hashverfahren nachbauen und nicht einfach nur "true" liefern. Aber wie gesagt, im Zweifelsfall wird einfach die ID-Prüfung aus der Anwendung entfernt, das funktioniert dann mindestens bis zum nächsten Update.
 

Anhänge

  • AppVerificationService.zip
    20,5 KB · Aufrufe: 5
Zuletzt bearbeitet:
Zurück