Beiträge von MrWellKnown

    Also bei mir gibts keinen Error. Hast du im Release-Modus kompiliert? Wenn nicht, dann tu das. ;p


    // btw hab gerade mitn Debugger geschaut, liegt an deiner Arraysize von "primes". C++ fängt bei 0 an zu zählen, deshalb zählt deine for-schleife einen "primes" zuviel, sprich kann nicht darauf zugreifen. Einfach Arraysize von "primes" um 1 erhöhen.


    int primes[1000];

    Selbst wenn man mit VB nicht hooken könnte, kann man ohne gro�en Aufwand einen Aimbot coden. Wieso sollte das nicht gehen?


    1. Hitbox / Bone Positionen auslesen.. Notfalls auch einfach Koordinaten des Origins, was aber eher suboptimal und weniger genau wäre.


    2. Die 3D Coords per WorldToScreen in 2D Coords umrechnen.. Bei D3D-Games mithilfe von D3DXVec3Project. Wobei das auch nicht mehr bei jedem aktuellen Game geht (Stichwort: GetTransform) aber es lässt sich sicher auch etwas eigenes von der Engine aus finden.


    3. Maus entweder per SetCursorPos / SendInput / ClipCursor bewegen.


    4. Profit ?!?!?

    Grö�te Protection war eher darauf bezogen, dass sie sich für die Keyabfrage einiges einfallen lassen (Verschlüsselung etc.) und dann ihr Programm mit ExitProcess / äquivalenten Funktionen beenden.


    In dem Fall lässt sich ExitProcess hooken und das Schlie�en des Programmes verhindern..


    Bei meiner unten angesprochenen Methode lässt sich das Hooken dieser Funktionen schonmal vermeiden.. Natürlich kann man auch Hooks verhindern [...]


    Wobei die meisten Kunden nicht zum Cracken der Software in der Lage sind, aber früher oder später gerät es halt in gekonnte Hände..


    // @ DizzY_D

    Zitat

    Es geht ja nicht darum das Beenden des Programms zu verbergen sondern den Vergleich, da der Reverser hier in den meisten Fällen Ansetzt.

    Achso. Kannst den Vergleich der HardwareID's noch so gut verbergen wenn du am Ende nur ein ExitProcess setzt. Ich hooke ExitProcess und schon kann ich dein Programm ausführen, ohne mich auch nur für den Vergleich zu interessieren.


    // Deine Tonart ist auch nicht wirklich angebracht, habe dich nirgends kritisiert oder angegriffen, als Teammitglied solltest du schon darauf achten.


    Aber wie auch immer, freue mich auf dein Tutorial.

    Die HDD-Serial ändert sich nicht nach der Formatierung. (die VolumeID dagegen schon)


    Den Windowskey als ID zu benutzen ist halt auch nicht wirklich sicher, gibts ja CD-Key changer für Windows, damit wäre das auch ziemlich einfach umgangen..

    Zitat von ShockerZz;18638

    Natürlich ist die HWID kein ultimativer Schutz und recht leicht zu umgehen, aber sie ist dennoch eine kleine Hürde die wohl viele Kiddies nicht umgehen können. Hier ist etwas für dicht, zwar VB2008, dürfte aber übersetzbar sein.


    Im oben genannten Beispiel wird die HDD-Serial mithilfe der WMI ausgelesen (wovon ich ein paar Post's zuvor geredet hatte), ist eigentlich der schnellste und einfachste Weg um an die Serial zu kommen..


    Zitat von DizzY_D;18640

    Den Ultimativen Schutz gibt es sowieso net...
    HWID ist ja nicht der Schutz an sich sondern eher eine Methode sein Programm zu schützen. Wie sicher es ist liegt einzig und allein daran, wie man es implementiert.


    Richtig. Wenn die Abfrage früher oder später wieder in einem einfachen conditional jmp endet, lässt sich dass sehr einfach umgehen. Kenne auch einige Leute die einfach nen ExitProcess(0) nach der Abfrage des Antileaks benutzen (grö�te Protection einbauen aber dann per ExitProcess beenden^^) besser wäre es da einfach unbemerkt ein paar ASM-Register zu manipulieren und so einen Crash zu erzeugen. (was auf den 1. Blick aufjedenfall schwieriger zu entdecken ist..)

    Einfach in den Projektsettings bei der Laufzeitbibliothek (runtime library) 'Multithreaded (/MT)' angeben.. Wenn du dein Projekt als 'Multithreaded-DLL (/MD)' kompilierst wirds Probleme auf PC's geben, welche nicht die Microsoft C/C++ runtime library dll's installiert haben.. (weil diese eben bei /MD nicht statisch zu deinem Projekt gelinkt werden!)

    Einfach mal GetLastError() ausgeben lassen, denke mal das geht in Richtung 'ERROR_ACCESS_DENIED', möglicherweise hilft dir dagegen das allocaten von Debug privilegien.. Mehr kann ich jetzt auch nicht sagen, da ich mich kaum mit Vista auskenne.

    Naja Visual Basic Code kann ich dir jetzt nicht geben, da ich nur in C++ programmiere.. Aber als HardwareKey würde sich z.B. die physikalische Festplattenserial anbieten. (nicht die VolumeSerialNumber)
    Diese lässt sich einfach über die Windows Management Instrumentation [1] beziehen. Also sollte schon was physikalisches sein, nicht einfach die MacID oder die oben angesprochene VolumeSerialNumber, da sich diese Sachen sehr leicht ändern lassen. Also ich geb dir mal nen kleinen Einblick wie mein Antileak aufgebaut ist:


    - Customer führt ein Tool aus welches seine HDD SerialNumber ausgibt.
    - Ich generiere einen Key (habe dafür einen einfachen Algorithmus geschrieben) [2]
    - Auf meinem Server befindet sich eine Datei welche alle Keys der User beinhaltet, sprich wo ich den neuen User eintrage.
    - Per sockets streame ich die Datei in nen Buffer und lese sie dann aus..
    - if ( m_iComputedKey != m_iServerKey ) SilentCrash();


    [1] http://msdn.microsoft.com/en-us/library/aa394582.aspx
    [2]

    Nur das Passwort. Um an die Usernamen zu kommen habe ich mir einfach via FindFirstFile / FindNextFile die Steamapps-Ordner auflisten lassen und dann Sachen wie 'common' rausgefiltert.

    In welcher Sprache programmierst du denn? Deine angegebenen Registry-Paths brauch man nicht zwingend. Schau dir mal die Steam.dll genauer an, dort gibt es eine Funktion welche das aktuelle Passwort aus der ClientRegistry.blob decrypten kann. Ist halt um einiges einfacher als erst die ProductID, MachineGuid etc. aus der Registry auszulesen und damit dann den Key zu decrypten..