sro_client.exe patchen/verändern

  • Hallo stagetwo,


    ich versuche schon lange etwas in den sro_client.exe zu veränder. Es klappt nur teils ^^
    Erfolgreich konnte ich mit XVI32 ein paar Silkroads ändern, aber auch beim einloggen unten die Ver. %d %d zu einem anderen Text.
    Das Problem ist nun dies, dass der text auch nur 3 (drei) buchstaben haben darf sonst kann man Silkroad nicht starten.


    Soweit so gut versuche ich nun in ollydbg mit irgendwelchen Tutorials da zumzubasteln.
    Vergebens !


    Kennt sich da jemand ein wenig aus und weiß wie man in OllDbg nun sachen ändern kann, die länger als das bisherige ist.


  • Du kannst 'ne andere Adresse Pushen lassen und dann in der Data Section deinen anderen String hinschreiben.


    MfG

  • Eigentlich will ich, wenn man sich einloggt steht unten links
    "Welcome to Silkroad Online,
    Have a great Stay ..."
    Dies will ich sro_client.exe seitig noch bisschen verändern, dass am ende noch steht "Awesome".
    Dieser Text ist ja in der media.pk2 und kann da einfach geändert werden, dies will ich aber dort nicht ändern.


    Bisher geschafft aus Ver. -> Awe. zumachen.
    Sofern ich dort aus Ver. -> Awesome. mache, ist der sro_client gedamaged und kann nicht geöffnet werden, weil sich alle HEX-zahlen verschieben.

  • Silkroad übersetzt seine Unique-Strings, wie zum Beispiel "UIID_OR_WHATEVER_WELCOME_MESSAGE" mit einer Funktion in die jeweilige Sprache.
    Wie gesagt, Push an einer Stelle dann einfach nicht den Buffer, sondern deinen String.


    MfG

  • Silkroad übersetzt seine Unique-Strings, wie zum Beispiel "UIID_OR_WHATEVER_WELCOME_MESSAGE" mit einer Funktion in die jeweilige Sprache.
    Wie gesagt, Push an einer Stelle dann einfach nicht den Buffer, sondern deinen String.


    MfG


    Nur leider weiß ich halt nicht wie ich Pushen soll.
    Arbeite nie mit OllyDbg oder DeFixed.
    Ich benutze diese Programme nur um Addressen rauszufinden...


    Habe mir dies auch mal durchgelesen
    http://miniloader.mi.funpic.de…%20NoDC%20by%20blub22.pdf
    Bringt mir aber auch net soviel...


    In solchen sachen bin ich halt noch ein noob und möchte anfangen es zulernen 8)


    Update: Finde auch keine guten Tutorials, die von Drew Benton behandeln irgendwas anderes, noch komplizierte und Google spuckt nur crap aus.
    Hier sind auch noch 2 Tutorials http://miniloader.mi.funpic.de/download/Tutorials/

  • Dieser Unique-String wird in eine Funktion geworfen und direkt danach steht PUSH EAX, was heißt, dass der Rückgabewert dann einer zweiten Funktion gegeben wird. Du kannst mal gucken, wann der eigentliche String rauskommt, den du verändern möchtest, weil Silkroad da garantiert noch irgendein Zeug macht, was dich verwirrt.
    Da du leider nur ein Byte hast (0x50 glaube ich), baust du dir da eine Code-Höhle hin.


    MfG

  • Gibt es dann eine Möglichkeit sofern ich eine dll erstellen muss, dass man silkroad nur mit dieser dll starten kann.


    So das es Save ist, dass kein andere den sro client einfach kopiert.



    ---
    Send from my iPod via tapatalk



    Update:
    Schon bisschen kompliziert das tutorial...

  • wenn du nicht weist wie man eine einfache push funktion abändert, frage ich mich was du mit einer dll im client anstellen willst...

  • Ich ich weiß es halt nicht ^^
    Mit sowas habe ich mich noch nicht befasst geschweige denn interessiert.


    Jetzt interessiere ich mich dafür, aber kann es nicht :/

  • Ich zeige dir mal was ich weiß. Als beispiel ich möchte den Text ganz am anfang in der ChatBox beim start von Silkroad ändern. Dazu suche ich in der media.pk2 den text um genau zu sein befinden sich glaube ich fast alle texte in "textuisystem.txt" dort findest vor diesem text ein "UIIT_STT_STARTING_MSG". Der Client arbeitet mit diesem String und lädt durch diesen String in der Pk2 datei den Txt und zeigt ihn somit an. Da wir ihn ändern wollen müssen wir nach "UIIT_STT_STARTING_MSG" in Ollydbg unter strings suchen. Falls du dir sicher gehen willst ändere diese Adresse von "UIIT_STT_STARTING_MSG" auf einen anderen Unique-String und lade Silkroad dann wird dir dort was anderes angezeigt. Dort finden wir diese stelle:


    [cs]
    0077F5E3 E8 F83A0100 CALL sro_clie.007930E0
    0077F5E8 68 3C10D900 PUSH sro_clie.00D9103C ; UNICODE "UIIT_STT_STARTING_MSG"
    0077F5ED B9 4883EB00 MOV ECX,sro_clie.00EB8348
    0077F5F2 E8 89B41300 CALL sro_clie.008BAA80
    0077F5F7 8378 18 08 CMP DWORD PTR DS:[EAX+18],8
    0077F5FB 72 05 JB SHORT sro_clie.0077F602
    0077F5FD 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]
    0077F600 EB 03 JMP SHORT sro_clie.0077F605
    0077F602 83C0 04 ADD EAX,4
    0077F605 50 PUSH EAX
    0077F606 6A 01 PUSH 1
    0077F608 68 9BC9DBFF PUSH FFDBC99B
    0077F60D 68 FF000000 PUSH 0FF
    0077F612 57 PUSH EDI
    0077F613 E8 58BCFEFF CALL sro_clie.0076B270
    0077F618 83C4 14 ADD ESP,14
    0077F61B 6A FF PUSH -1
    0077F61D 8BCF MOV ECX,EDI
    [/cs]


    Wobei dieser Teil am interessantesten ist:


    [cs]
    0077F605 50 PUSH EAX
    0077F606 6A 01 PUSH 1
    0077F608 68 9BC9DBFF PUSH FFDBC99B
    0077F60D 68 FF000000 PUSH 0FF
    0077F612 57 PUSH EDI
    [/cs]


    Wenn ich jetzt etwas falsch sage korrigiert mich bitte.
    Push EAX sollte den text enthalten und PUSH FFDBC99B müsste die Farbe sein und PUSH 1 ist die textgröße vermutlich. Was genau die hier machen weiß ich auch nicht:
    0077F60D 68 FF000000 PUSH 0FF
    0077F612 57 PUSH EDI


    jedoch solltest du wenn diese Funktion Callst und in einem CodeCave nachbaust dir einen anderen LÄNGEREN text anzeigen lassen könnent.


    Versuch es über VirtualAllocEx. Hier ein gutes Tut von Lolkop dazu http://www.stealthex.org/site/…client-internal-functions

  • Genau richtig.
    Ich versuche grade alles mögliche ^^


    Habe schon aus

    Code
    1. 0078CF2B /72 05 JB SHORT 0078CF32

    dies gemacht

    Code
    1. 0078CF2B /72 05 JUMP SHORT 0078CF32


    Dann kommt keine wilkommens nachricht sondern nur 2 Kästchen.


    Wie Twiche schon sagte bei PUSH EAX kommt die eigentliche wilkommensnachricht.


    Wie kann ich denn da einen string pushen ?
    bzw. die Farbe

    Code
    1. 0077F608 68 9BC9DBFF PUSH FFDBC99B


    zu dieser ändern will, geht dies nicht.

    Code
    1. PUSH FFE920AD


    unknown identifier

  • adde mich mal in icq ich interessiere mich gerade auch dafür


    Edit:


    Da ich selber gerade daran bin und paar sachen geschafft habe, würde ich gerne die Farbe meines Charakternamen ändern finde leider nicht die stelle im client nach welche unique string etc soll ich suchen?

  • man pusht keine strings, sondern adressen, welche auf die jeweiligen strings zeigen.


    dh du suchst dir die stelle, an welcher der string gepusht wird. sollte diese stelle einmalig aufgerufen werden, kannst du einfach einen eigenen string in den speicher packen (ascii oder unicode, je nach client), und diese (neue, eigene) adresse pushen.


    sollte diese codestelle aber mehrmals genutzt werden, musst du eine codecave einbauen, und eine abfrage für den string mit einarbeiten.