KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Homebrew vor Cheatern schützen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,
bald ist es so weit.
Die erste Beta Version meines kleinen Muntermachers geht an die Tester.
Doch davor muss ich noch ein entscheidenes Feature einbauen.

Der Antihack

Ich habe mir schon viele verschiedene Lösungen ausgedacht und alle sind mehr oder weniger leicht zu umgehen. Aber ich denke es ist ein guter Anfang die geladenen Module zu überprüfen und einen AntiHook zu installieren.

Mit den Modulen ist das kein großes Thema. Einfach alle Module beim Start und in regelmäßigen Abständen mit einer Blackliste abgleichen lassen.

Jetzt komme ich aber zum Hauptthema: Der AntiHook.

Viele bekannte Anti Cheat Softwares benutzen diese Methode auf dem PC.
Doch ich selber habe keine Ahnung wie ich so etwas Implementieren sollte.

HacKmaN hat mal folgendes zum Hooken geschrieben:

Zitat:
[...] du machst beim (exports-) hooken nichts anderes als eine Adresse im Entrytable des Moduls zu ändern [...]


Wie kann ich bei einem Modul auf die Entrytable zugreifen?
Denn die ModuleMgr Library ist da an Informationen sehr raw.

Ich hoffe ihr könnt mir helfen, und ich freue mich auf eure Antworten =)

Unmöglich zu realisieren. Das Einzige (was mir im Moment einfällt) was du machen kannst, ist sceKernelFindModuleBy****** und sctrlHENSetStartModuleHandler deaktivieren, aber das bringt auf Dauer auch nichts, denn man kann einfach manuell im RAM nach dem Modul suchen.

Zum Entrytable:

Code:
SceModule2 *mod = sceKernelFindModuleByName("BLA");

SceLibraryEntryTable *entry = (SceLibraryEntryTable *)mod->ent_top;

int i, j;
for(i = 0; i < mod->ent_size * 4; i++)
{
     if(!strcmp(entry->libname, "BLAAAAAA"))
     {
          u32 *table = (u32 *)entry->entrytable;
          int size = entry->stubcount + entry->vstubcount;

          for(j = 0; j < size; j++)
          {
              table[j + size] = Zeiger_Zur_neuen_Funktion;
          }
     }
}


mfg

//EDIT: Wieso werden hier manche Zeichen im Code so seltsam angezeigt? >.<

Danke, für den Code Big Grin
Zwar sind mache Zeichen echt komisch aber ich weiß worauf du hinaus willst xD

Mhh okay schade.
Naja aber das mit den Entry Tabels reicht schon Big Grin
Ich könnte ja bei jedem Modul mit einer relevanten Funktion den Entry-Table auslesen und überprüfen ob die Funktion gehookt wurde und dementsprechend reagieren. Damit die Abfrage nicht an sich manipuliert werden kann, werde ich für die Suche wohl leider eine eigene nicht importierte Funktion schreiben müssen.
Naja werde mir mal die einschlägigen Funktionen ansehen.

Trozdem Danke HacKmaN!
Du hast mir, wieder mal, sehr geholfen.
Ich würde mich freuen wenn noch mehr "Pros" normalen Usern helfen würden.
Hast dir dein Thanks verdient ;D
Scheint ja ein größeres HB zu werden, wenn du schon an anticheat denkst.

Gibts iwo ein Vorstellungsthread/ANkündigungsthread. Denn es intressiert mich, was du gerade Codest

Chaosduckman :
Danke, für den Code Big Grin
Zwar sind mache Zeichen echt komisch aber ich weiß worauf du hinaus willst xD

Mhh okay schade.
Naja aber das mit den Entry Tabels reicht schon Big Grin
Ich könnte ja bei jedem Modul mit einer relevanten Funktion den Entry-Table auslesen und überprüfen ob die Funktion gehookt wurde und dementsprechend reagieren. Damit die Abfrage nicht an sich manipuliert werden kann, werde ich für die Suche wohl leider eine eigene nicht importierte Funktion schreiben müssen.
Naja werde mir mal die einschlägigen Funktionen ansehen.

Trozdem Danke HacKmaN!
Du hast mir, wieder mal, sehr geholfen.
Ich würde mich freuen wenn noch mehr "Pros" normalen Usern helfen würden.
Hast dir dein Thanks verdient ;D


Bringt wiederum alles nichts... hab vorhin vergessen zu sagen, dass Plugins VOR Homebrews geladen werden. Das heißt, man kann einfach ein Plugin laufen lassen, welches deinen Code deaktiviert. Nichts einfacher als das. Dagegen kannst du leider nichts machen.

mfg

Mhhhh also was schlägst du vor? Big Grin
Wäre es nicht möglich, einfach die Modules der gängigen Cheat-devices (mkultra, nitePR, cwcheat,...) über
sceKernelStopModule (SceUID modid, SceSize argsize, void *argp, int *status, SceKernelSMOption *option)

zu stoppen und dann mit
sceKernelUnloadModule (SceUID modid)

diese modules dann aus dem Speicher entfernen?

Da dann ja die cheat modules nicht mehr geladen sind, kann man somit auch nicht mehr cheaten.

PSP_Lord :
Wäre es nicht möglich, einfach die Modules der gängigen Cheat-devices (mkultra, nitePR, cwcheat,...) über
sceKernelStopModule (SceUID modid, SceSize argsize, void *argp, int *status, SceKernelSMOption *option)

zu stoppen und dann mit
sceKernelUnloadModule (SceUID modid)

diese modules dann aus dem Speicher entfernen?

Da dann ja die cheat modules nicht mehr geladen sind, kann man somit auch nicht mehr cheaten.


Plugins (auch Cheat Plugins, jaaaa) werden VOR dem Homebrew geladen. Damit kann man dann ganz leicht den Anti-Cheat-Code mit NOPs überschreiben.

Aber dafür müssten doch die Entwickler dieser Plugins ja erst einmal den Anti-Cheat-code finden (was ja evt. auch nicht so leicht ist). Und da viele dieser Plugins nicht mehr gewartet werden könnten solche Methoden ja funktionieren.

PSP_Lord :
Aber dafür müssten doch die Entwickler dieser Plugins ja erst einmal den Anti-Cheat-code finden (was ja evt. auch nicht so leicht ist). Und da viele dieser Plugins nicht mehr gewartet werden könnten solche Methoden ja funktionieren.


Solche Codes sind zu Meist einfach zu finden. Ist wie bei Blockaden von Sony^^

Lass doch einfach dein HB überprüfen, ob im Game alles normal abläuft, wenn nicht geht das HB aus. Ganz grob gesehen würde ich es so machen.

Arktos :
Lass doch einfach dein HB überprüfen, ob im Game alles normal abläuft, wenn nicht geht das HB aus. Ganz grob gesehen würde ich es so machen.


Und wieder dasselbe... Plugins werden vor dem Homebrew gestartet, also kann man mit einfachen Plugins einfach deinen Prüfcode deaktivieren Wink

Aber wie kann man den Prüfcode einfach so "herrausfiltern", wenn man den irgentwo "verstreut" findet man das doch nicht so leicht und das Cheat-Programm deaktiviert eventl. was anderes.

Arktos :
Aber wie kann man den Prüfcode einfach so "herrausfiltern", wenn man den irgentwo "verstreut" findet man das doch nicht so leicht und das Cheat-Programm deaktiviert eventl. was anderes.


Sowas zu finden ist absolut kein Problem... man muss nur wissen, wonach man sucht (ist wie bei den Sony Modulen^^).
PSPDecompiler + PRXTool FTW Wink

Aber könnte man es nicht so machen das im Prüfcode mehrer Sicherheitsvariablen und wenn der Code dann umgangen (oder sonst was) wird, dann wird erst das Menü von Spiel geladen und da wird überprüft ob diese Sicherheitsvariablen den Wert haben den sie haben sollen aber da der Prüfcode umgangen wurden ist sind diese nicht stimmend und das Spiel beendet sich einfach. Wäre doch so möglich und da die "Sicherheitsvariablen" im Menü überprüft werden kann man diese Überprüfung auch nich so leicht umgehen oder ? Big Grin
Seiten: 1 2 3 4
Referenz-URLs