PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hardware ID Protection V2 Offline/Online Tutorial/FAQ



Th3_Cr4xX
25.04.2010, 20:36
Credits gehen nicht an mich, sondern an politoxy!

So da es wohl einige Interessiert mache ich mal ein Kleines Tutorial oder eine FAQ dazu.
Es ist mein Erstes Tut hier also seit nicht Zu hart mit mir http://forum.vb-paradise.de/wcf/images/smilies/biggrin.png

Erstmal Die Wichtigsten Fragen)

F.)Was ist HWID und warum Wird es Benutzt?
A.)HWID Bedeuted Hardware ID ,dies ist eine Einmalige ID aus bestimmten Hardware Komponenten eures PC´s
Es wird Benutz Um ein Programm das ihr zb Kommerziell nutzen wollt zu schützen so das es nur auf dem Pc des Käufers ausgeführt werden kann.
F.)Offline? Online? was hat das zu Bedeuten?
A.)Man kann die HWID entweder Offline Prüfen (es wird Praktisch Hardcodet in die Source eingefügt),oder Online Per txt,phpscript (Auf FTP) oder mysql Datenbank (es wird Logischerweise eine internet verbindung des Käufers Benötigt)


Ich habe für euch Ein Beispiel Projekt erstellt wo es Um offline und online Überprüfung geht,dort wird jedoch nur die CPUID benutzt und bei der Online Prüfung wird nur eine txt benutzt (dies ist sehr unsicher aber um das grund Prinzip zu verstehen Reicht es).

Download Project (http://www.multiupload.com/5JHRKY0LJ6)

Hier nochmal In text Form


Zuerst 2 Imports

Imports System.Management
Imports System.Net

Offline Check

Die Function um die CPUID auszilesen

Friend Function ProcessorId() As String
Dim strProcessor As String = String.Empty
Dim query As New SelectQuery("Win32_processor")
Dim search As New ManagementObjectSearcher(query)
Dim info As ManagementObject
For Each info In search.Get()
strProcessor = info("processorId").ToString()
Next
Return strProcessor
End Function
Die Offline Check Methode


Public Function HWIDOfflineCHECK()
Dim HWID As String = ProcessorId()
If HWID = "HIER DIE HWID DES KUNDEN" Then 'WEnn ihr eine Oflline abfrage macht ,Müsst ihr für Jeden Kunden die HWID hier eintragen
MsgBox("Vielen Dank das sie sich Für Mein Programm Enstschieden haben") ' mir ist da grad nix besseres eingefallen ^^ ihr könnt aber die msgbox bei richtiger hwid weglassen ;)
Else
MsgBox("Nicht Erlaubter Zugriff")
Application.Exit()
End If
End FunctionDie Online Check Methode


Public Function HWIDOnlineCHECK()
Dim HWID As String = String.Empty
Dim check As New ManagementClass("win32_processor")
Dim managment As ManagementObjectCollection = check.GetInstances()
For Each mo As ManagementObject In managment
If HWID = "" Then
HWID = mo.Properties("processorID").Value.ToString()
Exit For
End If
Next
Dim schutz As String
schutz = HWID
Dim webb As New WebClient
Dim strings As String

Try
strings = webb.DownloadString("Hier euer ftp server mit dem link zur HWID.txt")

webb.Dispose()
If strings.Contains(schutz) Then

Else
MessageBox.Show("Nicht Erlaubter Zugriff! #1")
Application.Exit()
End If
Catch
MessageBox.Show("Nicht Erlaubter Zugriff! #2")
Application.Exit()
End Try
End Function
Der Form_load

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' so im FormLoad kommt dann entweder die Function "HWIDOfflineCHECK" Oder eben "HWIDOnlineCHECK" ich nehme hier jetzt mal offline
HWIDOfflineCHECK()
End Sub

hr Könnt um Die HWID auszulesen Diesen Code Benutzen :

Gebraucht Wird: Eine textbox ,ein Button und dieser Code



Friend Function GetProcessorId() As String
Dim strProcessorId As String = String.Empty
Dim query As New SelectQuery("Win32_processor")
Dim search As New ManagementObjectSearcher(query)
Dim info As ManagementObject

For Each info In search.Get()
strProcessorId = info("processorId").ToString()
Next
Return strProcessorId

End Function
Ihr ruft das ganze mit dem Button auf


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = GetProcessorId()
End SubWichtig ist auch das Ihr nicht "Nur" die CPUID benutzt sondern Eine
mischung aus Verschiedenen Festen Werten wie zb der CPU
,Mainboard,Grafikkarte das könnt ihr dann noch in einen Hash oder per Rc4 verschlüsseln.


MfG
Th3_Cr4xX

blackberry
25.04.2010, 20:45
If HWID = "HIER DIE HWID DES KUNDEN" Then

Das ist auch wirklich nur ein echter Schutz, wenn es sich einfach nicht lohnt das Programm zu cracken.

Also wenn jemand wirklich glaubt, dass so ein Schutz irgendwas bringt, dann sollte sich diese Person nicht wundern, wenn das Programm nach zwei Tagen 1000 mal gecrackt wurde.

roccihrs
25.04.2010, 20:50
Jaja.. das mit cracken ist doch klar.

Trotzdem finde ich das Tut wirklich gut um das Prinzip zu verstehen.

Th3_Cr4xX
25.04.2010, 20:58
Stimmt BlackBerry, aber fürs Grundverständnis is das Tutorial meiner Meinung nach perfekt.
BTW: Das hast immer diese Kunst nur das negative an Sachen zu sehen xD *willjetzkeinbeef* :D

xzibitsebi
26.04.2010, 15:23
hey,
Also entweder du bist politoxy (http://forum.vb-paradise.de/user/6062-politoxy/) oder du hast einfach geklaut :D
hier der originale Post von VB-Paradise
[VB.NET] Hardware ID (HWID) Protection V2 Offline/Online Tutorial/FAQ - Allgemein - Visual-Basic-Forum VB-Paradise (http://forum.vb-paradise.de/allgemeines/tipps-tricks-und-tutorials/allgemein/36911-hardware-id-hwid-protection-v2-offline-online-tutorial-faq/#post260240)

novaca!ne
26.04.2010, 15:51
Credits gehen nicht an mich, sondern an politoxy!Lesen, leute

blackberry
26.04.2010, 16:11
Trotzdem finde ich das Tut wirklich gut um das Prinzip zu verstehen.

Wenn das Prinzip heißt: "HowTo: einen möchtegern Softwareschutz erstellen", dann bringt es das Prinzip sehr gut rüber.

Wenn man Software wirklich schützen will, dann sollte man sich eins vor Augen führen: die Programme laufen auf bekannter Hardware und es gibt Programme um zu analysieren, was dein Programm macht.
Das wiederum heißt, dass es prinzipiell möglich ist dein Programm zu verstehen und somit deinen Schutz auszuhebeln.

Wichtig sind also neben Anti-Debuggingtricks (wobei diese den Reverser maximal ärgern - oder belustigen - je nach dem - diesen aber keinesfalls aufhalten werden) auch Versuche deinen Programmablauf so undurchsichtig wie nur möglich zu halten.
Zweck des ganzen ist es also dem Reverser den Prozess des Verstehens der Funktionsweise deiner Software so schwierig wie möglich zu gestalten.

Im Idealfall ist dann der benötigte Aufwand um das Programm zu verstehen in einem unpropertional großen Verhältnis zu dem eigentlichen Gewinn (z.B. niemand reverst Monate an einer Taschenrechnersoftware, die nur vier Operationen kennt: Plus, Minus, Mal, Geteilt)

Wenn man sich auch bewusst macht, dass schon CrackMe's für Anfänger Keyabfragen über If's bewerkstelligen, wird sehr schnell klar, dass (insbesondere in .NET-basierten Sprachen, die sich ja zumeißt in zufriedenstellender Form decompilieren lassen) solche "Schutzmechanismen" bereits von Einsteigern überwunden werden können.

Sollte man also ein Tutorial über Softwareschutzmechanismen sein, sollte thematisiert werden, wie man den Prozess des Reversens verhindert (bzw. genauer "hindert", da ein absolutes Verhindern in der Praxis eigentlich nicht möglich ist).
In diesem Tutorial wird besprochen, wie man:
1) eine eindeutige Kennung des Computers generiert (obwohl ich dieser "Eindeutigkeit" kritisch gegenüber stehe, da ich mir nicht sicher bin, ob ProcessorID eine eindeutige Kenngröße für die vorliegende CPU ist, oder nur eine Kenngröße für das Modell ist)
2) ID mit eincompilierter bzw. gedownloadeter ID vergleichen

Hier mal drei ganz oberflächliche Arten so einen Softwareschutz zu umgehen:
a) Offline: eincompilierte HardwareID im Programm via Hexeditor oÄ. ändern (sobald man diese lokalisiert hat - was mit OllyDbg kein Problem sein sollte)
b) On-/Offline: die If-Abfrage umgehen (drüberspringen, NOP'en, was-auch-immer)
c) Online: host-Datei so verändern, dass die "HWID.txt" vom Localhost anstelle des ursprünglich erwarteten Servers bezogen wird.

Soviel mal von jemandem, der sich mit Reversing einigermaßen auskennt.
Genaueres dazu könnten euch sicher ;X, oder EBFE erzählen.

______
EDIT:
@Th3_Cr4xX
Keiner beschuldigt dich es geklaut zu haben - oder besser gesagt: keiner, der mehr als die ersten zwei Zeilen.... ähhhh Buchstaben gelesen halt ;)

Th3_Cr4xX
26.04.2010, 16:11
Unglaublich, schreib ganz am Anfang EXTRA in Fettschrift : Credits gehen nicht an mich, sondern an politoxy!
und dann kann ich mir trotzdem sone scheiße anhörn

$_staX
26.04.2010, 16:18
If HWID = "HIER DIE HWID DES KUNDEN" Then

Wird einfach zu:
If HWID != "HIER DIE HWID DES KUNDEN" Then