Bypass?Patch? Wozu das, wenn man die COMODO Firewall nutzt
Interprocess Memory Access? Verbieten^^
Physical Memory Access? Nö!
Window Messages? Erst recht nich!
Dann noch Cheat Engine als Protected Application hinzufügen und dein Programm meint nixmehr zu CE^^
Edit: merke grade, die x64 Edition von Cheat Engine 6 wird sowieso nicht detected^^ xD
Bypass?Patch? Wozu das, wenn man die COMODO Firewall nutzt
Interprocess Memory Access? Verbieten^^
Physical Memory Access? Nö!
Window Messages? Erst recht nich!
Dann noch Cheat Engine als Protected Application hinzufügen und dein Programm meint nixmehr zu CE^^
Edit: merke grade, die x64 Edition von Cheat Engine 6 wird sowieso nicht detected^^ xD
Ich glaub, dass die Detection-Routine in v1.2 noch garnicht funktioniert, weil sie in einem externen Thread läuft, und da iwie nur ganz wenige Prozesse finden kann.
Ich weiß nur leider nicht, wieso..
Dass die Funktion immer 0 zurück gibt, stimmt ja nicht ganz, sie returnt einfach, d.h. es wird der Wert, der als letztes im eax register war, als Rückgabewert interpretiert.
Wenn man die Funktion hooken würde, ließe sich noch einiges mehr machen.
Erste Bytes prüfen? Klar, nur gibts zig Methoden zum Hooken, es wäre nicht wirklich effektiv.
Was die Klasse angeht: Meines Wissens gibt man den Namen der Klasse bei der Fenstererstellung an.
Außerdem lassen sich die Funktionen zum Auslesen der Klasse usw. auch leicht hooken.
Wie du es machen sollst? Wie man bei zahlreichen Anti-Cheat Programmen sieht: offline fast unmöglich.
Du könntest einen Treiber laden, der den Zugriff auf deinen Prozess verbietet und der über die Nutzung von bestimmten Api Funktionen wie WriteProcessMemory Hacks erkennt.
Zusätzlich noch Checksums vom Speicher und Dll Injection Erkennung.
Und trotzdem ließe sich all das noch relativ leicht bypassen, solange nichts von einem Server überprüft wird.
Das beste ist es immernoch, möglichst viel vom Server verwalten zu lassen und solche Dinge wie du es schon hast (obfuscation durch komplizierte berechnungen) einzubauen.
Ouh ich glaub nicht, dass man mit .NET Treiber bauen kann..
ICH jedenfalls nicht
Aber das wäre natürlich ein wenig sicherer.
Meine Idee war so ähnlich..
1. Überprüfen, welche DLLs in dem Prozess sind
2. Globales Read-/Writememory Hooking
Welches eben am einfachsten via Kernelmode ist.
Ich empfehle dir trotzdem noch Checksums/Hashes der Code Section, sodass Codepatches schwieriger werden und, wenn es schon nicht offline ist, noch ein paar mehr Checkvalues für den Wert, der verändert werden soll.
Die Berechnungen sind wie gesagt schonmal ein guter Ansatz.
Wenn du global R/WPM und OpenProcess hookst, kannst du auf die Prozessenumeration verzichten, verbraucht nur unnötig Resourcen und ist eh unsicher.
Wenn du schon Prozesse auflisten willst, kannst du es mit einer sichereren Methode probieren:
Statt Aufzählen von Fentsern oder der unsicheren EnumProcesses Api kannst du auch mithilfe von NT Api Funktionen die EnumProcesses nachbauen.
Ich weiß nicht mehr genau, wie es aufgebaut ist, jedenfalls war die NtQuerySystemInformation mit einbezogen, mit der alle laufenden Prozesse ausgelesen werden können.
Ich hab auch mal davon gehört, dass man mit csrss.exe an die laufenden Prozesse kommen kann, weiß aber nichts genauers dazu.
Verzichte jedenfalls auf offensichtliche Apis wie EnumProcesses, EnumProcessModules, EnumWindows, FindWindow, IsDebuggerPresent, usw.
Was btw. eine nette Idee für deinen Check wäre:
Ein Checkvalue der in irgendeiner mathematischen Abhängigkeit zum richtigen Wert steht. Ein Hash von beiden muss immer gleich sein (klingt etwas komisch formuliert, ich weiß. Ich meine damit, wenn man die beiden in irgendeiner Form verbindet (simple Multiplikation oder irgendetwas komplizierteres) muss immer das gleiche Ergebnis herauskommen (dementsprechend wird natürlich der Checkvalue immer akualisiert, wenn der richtige mit dem Button verändert wird), sodass auch immer der gleiche Hash herauskommt).
Ein Hash deswegen, damit es für Reverser schwieriger wird, die Abhängigkeiten nachzuvollziehen, wenn sie beim Check nur irgendwelche Hashes vorfinden.
Damit der von lolkop1 angesprochen Performanceverlust nicht eintritt, könnte man diesen Check nur jede Sekunde o.Ä. durchführen.
Was btw. eine nette Idee für deinen Check wäre:
Ein Checkvalue der in irgendeiner mathematischen Abhängigkeit zum richtigen Wert steht. Ein Hash von beiden
muss immer gleich sein (klingt etwas komisch formuliert, ich weiß. Ich meine damit, wenn man die beiden in
irgendeiner Form verbindet (simple Multiplikation oder irgendetwas komplizierteres) muss immer das gleiche
While 1
If GUIGetMsg()=$button_up Then
$secure_var+=$factor
$var=$secure_var/$factor
GUICtrlSetData($label, $var)
EndIf
anti_hack()
WEnd
Func anti_hack()
If $var <> $secure_var/$factor Then
MsgBox(0, "ERROR", "Hack detected!")
Exit
EndIf
EndFunc
Quote:
(dementsprechend wird natürlich der Checkvalue immer akualisiert, wenn der richtige mit dem Button
verändert wird), sodass auch immer der gleiche Hash herauskommt).
Ein Hash deswegen, damit es für Reverser schwieriger wird, die Abhängigkeiten nachzuvollziehen, wenn sie beim
Das Problem daran ist ja, dass var hier eine globale Variable ist und dementsprechend geändert werden kann.
Und da du sie auch direkt so, wie sie im Speicher ist, auf dem Label anzeigen lässt, wäre es auch nicht schwer, danach zu suchen.
Ich muss nurnoch herausfinden, wie ich den eigenen Memory überprüfen kann ohne readprocessmemory...
Aber sicherheitshashes hin oder her..
Einen funktionierenden Hack hat noch niemand gemacht :d
Wieso RPM? Ist doch dein eigener Adressebereich. Du kannst ganz einfach auf den Speicher zugreifen.
In C++ sowieso und in C# müsste dass doch über das unsafe (oder war es unmanaged?) keyword gehen, damit man Pointerarithmetik anwenden kann.
RPM ist ja Blödsinn für den eigenen Speicher.
Allerdings hast du dir da echt die falsche Sprache ausgesucht, für gute (so gut es offline eben geht) Schutzmechnismen muss man tief ins Windows System eingreifen, vor allem in die NtApi, da ist das Überprüfen des eigenen Speichers über Pointer das geringste Problem, was ja wie gesagt, deutlich einfacher in einer nativen Sprache wäre ;O
Wieso RPM? Ist doch dein eigener Adressebereich. Du kannst ganz einfach auf den Speicher zugreifen.
In C++ sowieso und in C# müsste dass doch über das unsafe (oder war es unmanaged?) keyword gehen, damit man Pointerarithmetik anwenden kann.
RPM ist ja Blödsinn für den eigenen Speicher.
Allerdings hast du dir da echt die falsche Sprache ausgesucht, für gute (so gut es offline eben geht) Schutzmechnismen muss man tief ins Windows System eingreifen, vor allem in die NtApi, da ist das Überprüfen des eigenen Speichers über Pointer das geringste Problem, was ja wie gesagt, deutlich einfacher in einer nativen Sprache wäre ;O
Ja, aber da hat er das Problem mit Segmention faults, falls die Page freigegeben oder nur reserved ist.
(Ich weiß jetzt nicht ob man in .NET Sprachen SEHs verwenden kann.)
Aber um ohne SEHs eine SIGSEGV zu vermeiden müsste er IsBadReadPtr oder VirtualQuery verwenden.
Mit RPM hat er dieses Problem nicht.
(Wenn er aber weiß, dass die Adresse valid ist, kann er natürlich memcpy & co. verwenden).
(Wenn er aber weiß, dass die Adresse valid ist, kann er natürlich memcpy & co. verwenden).
Das gibts in C#? Achso, wusste nicht, dass man in ner managed Sprache so nen rohen Speicherzugriff vornehmen kann, außer durch dieses unmanaged keyword^^
Eventuell wäre es auch möglich, mithilfe einer Dll, die in einer nativen Sprache geschrieben wurde, die nötigen Funktionen bereitzustellen, die könnte ihm ja ein netter Anti-Cheat Begeisterter Programmierer bereitstellen
Wenn du mir erklären würdest, wie dein "Anti-Cheat" Zeug funktioniert, könnte ich es auch leicht "detecten"/aushebeln o,ô bzw. wenn du mir den src geben würdest... Ohne Möglichkeit zu debuggen ist das schon lustig gemeint...
@Vorposter:
Wenn ich unqualifizierten Müll lesen will, schau ich mir meine Beiträge-History an. Auf solche Tipps kann ich gerne verzichten. Die Antwort passt weder in den Kontext des Gesprächs, noch ist sie auf irgendeine Art sinnvoll. Beides wüsstest du, wenn du dir den gesamten Thread durchgelesen hättest, bzw. dich auch nur Sekunden mit der Problematik auseinandergesetzt hättest.
Hack or Program Hack That Works For GamezAion? 08/23/2010 - Aion Private Server - 2 Replies Hello Just Wondering is there a Hack or Program Hack thats working for GamezAion available thats free or need to be paid for? Please Give Working Ones thanks with details^^