C++ Memoryreading

  • Hey Com,


    Sitze derzeitg an einer Cheaterklasse für einen AC Client.
    Mein Problem ist es jetzt allerdings das ich planlos bin wie ich im Memory nach zum beispiel s0beit suchen kann.


    Bzw was muss ich da genau suchen, eine Erklärung wäre nett.
    Weiss derzeiitg nur das ich nach "Hex" Codes suchen kann?


    Gruss

  • Im Arbeitsspeicher gibt es keinen Unterschied zwischen Text und Zahlen. Alles, was gespeichert wird, sind erst einmal Binärwerte, die dann meist im Block als ein Byte gelesen werden. Wie man diese interpretiert, das muss jedes Programm selber entscheiden. Du kannst, wenn du möchtest, nach einer Sequenz von Zahlen suchen, die, wenn man sie als Text lesen würde, den Text ergeben würden, den du suchst.


    Wenn du also weißt, wie du nach Hexadezimalwerten suchst, dann musst du nur nach dem ersten Buchstaben als Hexadezimalwert suchen und dann schauen, ob die nach diesem Buchstaben folgenden Werte genau dem von dir gesuchten Text entsprechen.


    Mehr Theorie hier: http://de.wikipedia.org/wiki/Byte-Reihenfolge


    Wenn du verstehst, wie Pointer in C++ funktionieren, dann solltest du mit memchr() und einer Schleife zu dem gewünschten Ergebnis kommen.
    http://www.cplusplus.com/reference/cstring/memchr/


  • Wie detecte ich dann s0beit trollbeit usw?

  • Wie detecte ich dann s0beit trollbeit usw?

    Indem du eine andere Programmiersprache verwendest, vorzugsweise irgendwas simples wie Autohotkey, in der es diese Funktion schon vorgefertigt gibt. Da du innerhalb von einer Minute geantwortet hast, gehe ich davon aus, dass du dich nicht damit beschäftigt hast, was ich geschrieben habe. Ein tiefes Verständnis für einen Computer ist aber in Sprachen wie C und C++ dringend notwendig. Wenn du nicht weißt, wie der Arbeitsspeicher im Computer funkioniert, wie Cheats funktionieren und somit was sie tun und wo man es erkennen kann, dann bist du nunmal nicht in der Lage, ein effektives Anticheatsystem zu schreiben. Im Arbeitsspeicher nach "S0beit" zu suchen ist weit von dem entfernt, was sich ein normaler Mensch unter "Anticheat" vorstellt.


    Ein weiterer Weg für C++ (etwas einfacher, da automatisiert) um wirklich nur nach einem Text in einem Speicherbereich zu suchen, wäre:
    1. Konstruktion von std::string aus dem Speicherbereich anhand eines Pointers sowie der Länge des Speicherbereiches
    2. Verwendung von std::string::find
    Habe ich so z.B. hier: http://www.cplusplus.com/forum/general/28828/ gefunden, ich weiß nicht, ob das wirklich so einfach funktioniert, da hier zumindest auch Encodierungsprobleme auftreten können (Big/Little-Endian, Unicode oder ASCII etc.)

  • Indem du eine andere Programmiersprache verwendest, vorzugsweise irgendwas simples wie Autohotkey, in der es diese Funktion schon vorgefertigt gibt. Da du innerhalb von einer Minute geantwortet hast, gehe ich davon aus, dass du dich nicht damit beschäftigt hast, was ich geschrieben habe. Ein tiefes Verständnis für einen Computer ist aber in Sprachen wie C und C++ dringend notwendig. Wenn du nicht weißt, wie der Arbeitsspeicher im Computer funkioniert, wie Cheats funktionieren und somit was sie tun und wo man es erkennen kann, dann bist du nunmal nicht in der Lage, ein effektives Anticheatsystem zu schreiben. Im Arbeitsspeicher nach "S0beit" zu suchen ist weit von dem entfernt, was sich ein normaler Mensch unter "Anticheat" vorstellt.


    Ein weiterer Weg für C++ (etwas einfacher, da automatisiert) um wirklich nur nach einem Text in einem Speicherbereich zu suchen, wäre:
    1. Konstruktion von std::string aus dem Speicherbereich anhand eines Pointers sowie der Länge des Speicherbereiches
    2. Verwendung von std::string::find
    Habe ich so z.B. hier: http://www.cplusplus.com/forum/general/28828/ gefunden, ich weiß nicht, ob das wirklich so einfach funktioniert, da hier zumindest auch Encodierungsprobleme auftreten können (Big/Little-Endian, Unicode oder ASCII etc.)


    Ich lass es haha ;D