Prozess beenden verhindern



  • Dann versteck den Prozess vor dem TaskManager/Process Explorer/...
    Hab aber grad keinen Code parat.

    Und/Oder mappe eine DLL in den fremden Prozess, die kann dann gucken, ob alles normal ist.

    Aber merke: Clientseitige AntiCheats können IMMER gecrackt werden. Ein ewiger "Krieg".
    Die Cheater wollen cheaten, die nicht-Cheater wollen ein faires Spiel.

    Versuch's mit reichlich http://de.wikipedia.org/wiki/Security_through_obscurity .
    Design ausdenken und alles vermurksen was nur geht, 20 verschiedene Cryptfunktionen allein für Stringliterale, AntiDebug Tricks usw...

    Hilft aber alles nix gegen einen guten Cracker der Zeit hat...



  • danke für den link, ich werd mich da mal einlesen. aber die fertige exe ist doch sowieso aus maschinencode und ein decompilern so dass man einen verwertbaren code in c++ erhält ist doch eh fast unmöglich, oder?

    und auch danke für den ansatz den prozess zu verstecken, der einzige der bis jetzt erfolgsaussichten hat 🙂 . Nur leider habe ich überhaupt keine ahnung wie man das macht.

    hat vielleicht jemand ein kleines Codebeispiel oder einen Link da?

    danke schonmal,
    andi01.



  • andi01 schrieb:

    danke für den link, ich werd mich da mal einlesen. aber die fertige exe ist doch sowieso aus maschinencode und ein decompilern so dass man einen verwertbaren code in c++ erhält ist doch eh fast unmöglich, oder?

    Nö, ist gut möglich.
    Man muss halt echt topfit mit Assembler sein sowie sich mit mit den verschiedenen Compileroptimierungen auskennen. Dann ist es aber immer noch ein Haufen Arbeit. Vor allem hat man meistens keine Namen und muss per Reverse Engineering sowie Trial&Error herausfinden was eine Funktion macht etc...

    Was ein guter Ansatz ist, ist der Hexrays Decompiler 1.1 für IDA 5.5. Der erzeugt recht brauchbaren C-Code aus Assembler-Code der mit kleinen, händischen Verbesserungen doch sehr gut lesbar ist, bis auf das fehlen aller Namen eben...
    Kostet aber leider ne Menge, 350 $ IDApro Lizenz + 1500 $ Hexrays Lizenz, würde ihn mir gerne zulegen aber das geht über mein Studentenkapital und cracked hab ich nichts gefunden bis jetzt.



  • ja, aber ich glaube kaum dass sich jemand so viel mühe macht und soviel geld zahlt nur um ein kleines pc-spiel zu hacken, derjenige weiß mit seiner zeit bestimmt was besseres anzufangen.

    jedenfalls ist das programm da es in maschinensprache ist als exe vor den normalen amateur-hackern die meist weder viel geld noch zeit investieren wollen ganz gut geschützt, das ist ja auch das hauptziel. richige "profihacker" auszusperren ist sowieso fast unmöglich weil die eigentlich immer einen weg finden (siehe cheattools, trainer, cheatmodule etc.).

    für die meisten leute sollte es also ausreichend sein es als exe zu schreiben (es können eh nicht alle c++ und die wenigen der spieler die es können werden kaum bereit sein so viel geld +zeit zu investieren nur um ein paar lvl höher zu kommen, und wenn doch, dann sei ihnen ihr erfolg gegönnt 😃 , is ja immerhin nur ein spiel und kein bankkonto 🙂 ).

    ich brauche nur noch eine möglichkeit das beenden eines prozesses über den taskmanager zu verhindern.

    mfg,
    andi01.



  • andi01 schrieb:

    ich brauche nur noch eine möglichkeit das beenden eines prozesses über den taskmanager zu verhindern.

    Aber sonst geht's Dir noch gut? Wie wär's mit Treiber-Absetzen?



  • wieso? das fenster soll ja nicht unschließbar werden, sobald man das spiel schließt geht es ja mit zu. es ist ausschließlich mein ziel das eine fenster nicht unabhängig vom anderen schließen zu können, was ja auch der sinn eines game-guards ist. wenn jemandem dazu eine bessere möglichkeit einfällt bin ich gerne für Vorschläge offen.

    edit: leider weiß ich auch nicht wie man einen treiber absetzt und ob das die richtige methode ist, das einzige ziel ist es dass man beide fe´nster (guard und spiel) nur ZUSAMMEN schließen kann.

    mfg,
    andi01.



  • andi01 schrieb:

    ja, aber ich glaube kaum dass sich jemand so viel mühe macht und soviel geld zahlt nur um ein kleines pc-spiel zu hacken, derjenige weiß mit seiner zeit bestimmt was besseres anzufangen.

    Erm, um einen non-obfuscated Gameguard ohne Encryption oder anderen Spielereien zu cracken ist wohl nichts aufwendiges...



  • naja wie auch immer, das kann ich ja dann auch selbst machen den quellcode komplizierter machen 🙂 .

    eigentlich bräuchte ich nur einen kleinen beispielcode für eine der beiden möglichkeiten:

    1.Fenster vor taskmanager verstecken(wäre mir persönlich wesentlich lieber und ver mutlich auch einfacher zu bewerkstelligen)
    2.das beenden des einzelnen Prozesses verhindern dass beide prozesse (game und guard) nur zusammen geschlossen werden können und nicht einzeln

    mein eigentliches Ziel ist es aber nur dass man den gameguard-prozess nicht einfach so beenden kann und das spiel weiterläuft und nicht irgendwie ein komplett unschließbares fenster zu erzeugen, falls also jemand einen funktionierenden besseren Vorschlag hat einfach schreiben, immerhin geht es eigentlich nicht um den weg wie ich das schaffe sondern um das ziel die beiden fenster praktisch 'abhängig' zu machen.

    mfg,
    andi01.



  • Rootkits, wenn nötig 2 die sich gegenseitg überwachen.



  • habe schonmal nach dem stichwort gegoogelt aber kein funktionierendes codebeispiel in C/C++ gefunden. wahrscheinlich ist es wirklich am besten das programm nicht unschließbar zu machen sondern einfach aus der prozessliste im taskmanager irgendwie zu entfernen.

    hat vielleicht mal jemand ein kleines codebeispiel da?

    danke schonmal,
    andi01.



  • Also soll es ein Rootkit werden? Ich glaube, das Spiel wird bei mir keinen Gefallen finden. Aber frag doch mal bei Sony nach, die kennen sich da aus.

    Anstatt zeit und Arbeit in irgendwelche nutzlosen Sicherheitsfeatures zu stecken, solltest du die Ressourcen nutzen, um die Software zu verbessern.



  • andi01 schrieb:

    ...aus der prozessliste im taskmanager irgendwie zu entfernen.
    hat vielleicht mal jemand ein kleines codebeispiel da?

    reicht das?

    BOOL EndProcess(LPTSTR lpszTargetProcess) 
    { 
        HANDLE snapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
        PROCESSENTRY32 processEntry; 
        processEntry.dwSize = sizeof(PROCESSENTRY32); 
    
        if(Process32First(snapshotHandle, &processEntry)) 
        { 
            do 
            { 
        if(strcmpi(processEntry.szExeFile, lpszTargetProcess) == 0) 
        { 
            HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,processEntry.th32ProcessID); 
            TerminateProcess(hProcess,NULL); 
            CloseHandle(hProcess); 
            CloseHandle(snapshotHandle); 
            return TRUE; 
        } 
    
            } 
            while(Process32Next(snapshotHandle, &processEntry)); 
        } 
    
        CloseHandle(snapshotHandle); 
        return FALSE; 
    }
    


  • danke erstmal für die antworten. muss ja nicht unbedingt ein rootkit werden. das ursprüngliche ziel ist nur dass der guard nicht unabhängig vom spiel geschlossen werden kann, wie ich das erreiche ist dabei eher unwichtig (rootkits, unschließbar machen etc. ).

    edit: dein code gibt bei mir leider die folgenden fehler aus:

    test2.cpp(5) : error C2065: 'TH32CS_SNAPPROCESS': nichtdeklarierter Bezeichner
    test2.cpp(5) : error C3861: "CreateToolhelp32Snapshot": Bezeichner wurde nicht gefunden.
    test2.cpp(6) : error C2065: 'PROCESSENTRY32': nichtdeklarierter Bezeichner
    test2.cpp(6) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'processEntry'
    test2.cpp(6) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(7) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(7) : error C2228: Links von ".dwSize" muss sich eine Klasse/Struktur/Union befinden.
    1> Typ ist ''unknown-type''
    test2.cpp(7) : error C2065: 'PROCESSENTRY32': nichtdeklarierter Bezeichner
    test2.cpp(7) : error C2070: ''unknown-type'': Ungültiger sizeof-Operand
    test2.cpp(9) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(9) : error C3861: "Process32First": Bezeichner wurde nicht gefunden.
    test2.cpp(13) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(13) : error C2228: Links von ".szExeFile" muss sich eine Klasse/Struktur/Union befinden.
    1> Typ ist ''unknown-type''
    test2.cpp(15) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(15) : error C2228: Links von ".th32ProcessID" muss sich eine Klasse/Struktur/Union befinden.
    1> Typ ist ''unknown-type''
    test2.cpp(23) : error C2065: 'processEntry': nichtdeklarierter Bezeichner
    test2.cpp(23) : error C3861: "Process32Next": Bezeichner wurde nicht gefunden.

    test2 - 17 Fehler, 6 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    muss ich noch irgendetwas includen oder bibliotheken einfügen?

    mfg,
    andi01.



  • Deine Versuche führen zwangsläufig zu
    - Task-Manager schließen, sobald er aufgemacht wurde.
    - Mit allen Entwicklungsumgebungen gleich verfahren, weil man mit der API auch Prozesse abschießen kann.
    - Während das Spiel läuft, alle Wechselmedien abklemmen, da könnten Abschießprogramme drauf sein.
    - Ausführen jeglicher anderen Programme verhindern, jedes könnte böse sein.
    - Alle anderen laufenden Programme schließen, es könnte ein vorbereitetes Abschießprogramm sein.

    Wäre es einfacher, einen Teil der Spiellogik in den Wächter auszulagern und so erzwingen, daß gelegentliche Kommunikation nötig ist? Beide können sich gegenseitig überwachen und wenn der Kumpel stirbt, stirbt man mit.



  • volkard schrieb:

    Deine Versuche führen zwangsläufig zu
    - Task-Manager schließen, sobald er aufgemacht wurde.

    vielen dank, an diese einfach möglichkeit habe ich noch gar nicht gedacht! das würde das hauptproblem lösen. ich versuche gleich mal das umzusetzen! es gibt zwar leute die process explorer verwenden, aber mit dem kann man ja wie mit dem taskmanager verfahren. und wenn jemand wirklich gut programmieren kann kann ich ihn auf dauer eh nicht davon abhalten den gameguard irgendwie abzuschalten, kein system ist 100% hacksicher 🙂 .

    volkard schrieb:

    Wäre es einfacher, einen Teil der Spiellogik in den Wächter auszulagern und so erzwingen, daß gelegentliche Kommunikation nötig ist? Beide können sich gegenseitig überwachen und wenn der Kumpel stirbt, stirbt man mit.

    ja, die lösung wäre perfekt. nur leider habe ich überhaupt keine ahnung wie man das umsetzt.

    danke,
    andi01.



  • ein blick in die MSDN hätte dir verraten das du die tlhelp32.h includieren musst



  • eventuell hilft dir das weiter



  • Äh.
    Wieso soll/muss das denn überhaupt ein zweiter Prozess sein?
    Pack das doch einfach alles mit in den Game-Prozess.

    Nochwas: du musst nichtnur verhindern/erkennen dass der "Guard" beendet wird. Es gibt auch noch Funktionen wie SuspendThread(), mit denen man deinen Guard einfach in die Heia schicken kann, ohne ihn zu beenden. 😉



  • stimmt, an SuspendThread habe ich gar nicht gedacht, aber das wird sich wahrscheinlich nur verhindern lassen wenn ich den guard ins spiel einbinde. nur wie mache ich das, dass ich keinen extr-prozess brauche? immerhin habe ich ja nicht den quellcode des spiels, sonst wär's ja leicht 🙂 . aber mir ist keine möglichkeit bekannt einem bestehenden prozess (dem spiel) einen thread hinzuzufügen.

    wie geht denn das?

    @ @rT!f@Ct : deine funktion beendet zwar den taskmanager, sobald ich ihn wieder aufmache ist der prozess aber noch immer sichtbar?!

    vermutlich ist es am besten und vor allem realisierbarsten den prozess einfah aus dem taskmanager zu verstecken, aber irgendwie finde ich einfach keinen passenden beispielcode, egal ob hier, bei google, in andeen foren etc. 😞

    mfg,
    andi01.



  • vergiss es. selbst wenn du es schaffst den prozess vorm
    taskmanager zu verstecken, es gibt noch so viele andere programme
    die deinen prozess schließen können.

    (du kannst mittels FindWindow an die liste im taskmanager kommen
    und dann einfach deinen eintrag entfernen, was der nutze nicht
    sieht kann er nicht abschießen).

    dann:
    wenn du nicht den source des games hast, wieso willst du ihn dann
    protecten? und wie willst du ihn protecten? ein paar VirtualProtect
    hier, und WriteProcessMemory da und das game wurde unbemerkt geändert 😉

    SuspendThread ist ebenfalls problematisch, da sich deine threads permanent
    selber überwachen müssten. ich hab mir auch mal ein kleines tool zum
    einfrieren von prozesses geschrieben. klappt bei bisher jedem programm 😃

    die einzige möglichkeit die ich jetzt sehe, AUßER einen treiber zu
    schreiben, ist, deinen code via CreateRemoteThread in den anderen
    prozess zu schleusen. da kann er dann nach lust und laune überwachen.

    es stellt sich mir immernoch die frage was das soll. denn wenn du keinen
    source davon hast, kannst du nur die binary ändern. warum sollte aber
    jemand deinen guard verwenden, wenn es die unprotected-exe auch gibt?

    erklär uns einfach mal den ganzen hintergrund 🙂


Anmelden zum Antworten