Gameserver selber schreiben



  • also ich hab vor, ein Server zu schreiben für StarWars Galaxies. Da bin ich mir wohl bewust das es wenn es denn überhaupt möglich währe ein langer weg werden wollte. Hat das wohl aussichten? Hätte jemand intresse das mit mir zusammen zu versuchen?



  • frag im projekte forum nach, da hast du besser aussichten connections zu knüpfen. Ob das ein erfolg wird hängt wohl am meißten von dir ab.

    rapso->greets();



  • Ich habe rausgefunden, dass die Daten, die gesendet werden verschlüsselt sind.

    Bzw. wenn ich mehrmals die gleichen daten sende (z.B. username und passwort zum anmelden), sieht das entsprechende IP-Packet immer anders aus (natürlich mein ich den Datenteil, nich der header).

    Die client exe ist kanappe 20MB gross
    Hatt es da erfolgsaussichten, die verschlüsselung rauszubekommen?
    ((de-)Assembler)



  • uh, hier wird es interessant. Am besten schaust du mal ob Symboltabellen und ähnliches in den Binärdateien vorhanden sind, vielleicht kann man ja von den Namen der ein oder anderen Funktion darauf schließen, dass es sich um die Verschlüsselungsfunktion handelt. Dann schau einfach, wie die Verschlüsselung abläuft, irgend wo muss ja ein Schlüssel erzeugt werden, den du dann theoretisch aus dem Speicher auslesen könntest. Naja, dass ist eben ein wenig frimelig, aber auch anspornend 😉



  • hi,
    und wenn man versucht sowas wie einen proxyserver zu schreiben und den dazwischen setzt und alles mitloggt???

    gruss
    msp



  • @msp sowas ähnliches wurde schon vorgeschlagen
    @michi nimm dir mal die dlls vor, manchmal sind solche verschlüsselungsfunktionen irrsingerweise in dlls enthalten(starcraft...).



  • Leider hab ich persönlich von assembler keine ahnung

    Aber wenn ich es Disassemblire finde ich stellen wo was steht von ServerLog und Connection und solche sachen... Nach ein Assebler-guru müsst ich mich erst umsehen... Wollt eigentlich nur wissen obs möglich währe.



  • Man kann in dll auch Funktionen aufrufen ohne zu wissen was die Funktion macht. Musst nur herausfinden wie die Funktion heist, welche Parameter sie erwartet und was sie zurückgibt. Ist nicht schwierig



  • Also in DLLs musste nur mal nach der Export Tabelle suchen da findest alle Namen, aber wenn die sich etwas gedacht haben heißen die nicht encrypt und decrypt.

    Und bevor du wild durch den Assemblercode gehst würd ich dir eh zu nem Debugger (Z.B. SoftIce) raten, sonst suchst du dich zu tode.



  • wenn es ein kommerzielles spiel ist, dann hat es einen kopierschutz, dieser wird den grossteil der exe verschlüsselt rumliegen haben und nur auf die pages auf die zugegriffen wird, wird der kopierschutz unverschlüsselt liegen haben (damit meine ich auch codepages)

    somit ist disasseblen nicht wirklich möglich, mehr als den source vom kopierschutz wird man erstmal nicht finden. man müßte das programm zur laufzeit an der nötigen stelle einfrieren und dort dann schauen wo der code-pointer liegt und diese stelle versuchen nach einem verschlüsselungssource zu durchsuchen.
    das könnte aber auch nicht einfach werden, denn für verschlüsselung (beim kopierschutz) werden oft die komischten komponenten verwendet. es kann sein dass ein teil davon im mit dem spiel installiertem cd-rom treiber berechnet wird (also ring-0, darauf kann man nur schwer zugreifen), es kann sein dass ein teil davon auf der graka berechnet wird (da müßte man genau mitloggen was geschrieben und was wieder ausgelesen wird), es kann sein mit einem raw-pointer einfach die daten der cd mit xor zu den datenpacketen durchgegangen werden.

    sowas ist wahrlich garnicht so einfach zu hacken, weil die spielecoder mittlerweile paranoid genug geworden sind um jegliche möglichkeit auszunutzen es den cheatern,hackern,kiddis zu vereiteln dass sie ihnen ihr gehalt wegnehmen.

    rapso->greets();


Anmelden zum Antworten