Beiträge von user000user

    PS: Mir stellt sich natürlich die Frage, warum du nicht direkt die sockaddr_in struktur nimmst.


    Ja, das hatte ich erst auch versucht, allerdings wusste ich dann nicht, wie ich es mit WriteProcessMemory da rein bekomme.^^

    Nochmal, du hast 16 Bits, die den Port angeben. Du gibst aber nur Bytes (8 Bits) aus. Deswegen shiftest du die 61 8 Bits nach links und addierst die 163 drauf:


    WORD port = 61 << 8 + 163; // Das ist 15779.


    Andersrum geht das so:
    BYTE high = port >> 8;
    BYTE low = port - ( high << 8 );


    Habe es aber jetzt so gemacht und es funktioniert. Danke :)

    Es steht doch schon in deiner struct, dass das ein WORD ist.


    *( WORD* )&your_byte_array_or_whatevery[ 2 ] = 1337; // Or what port you'd like.


    MfG


    Danke für die Antwort, allerdings ist der Port ja normalerweise 15779. Da wo der Port aber stehen sollte, kommt, nachdem ich es ausgelesen habe

    Code
    1. 61
    2. 163

    Ich verstehe jetzt noch nicht ganz, wie ich die beiden Werte ändern muss, um auf meinen gewünschten Port zu kommen.

    Also es erscheint schon mal eine MessageBox.
    Edit: Habe mal versucht, den Client über WriteProcessMemory zu redirecten. Ich habe erst mit Ollydbg die Addresse der sockaddr heraus gesucht und dann mal ausgelesen, wenn der Client an der connect Funktion ankommt:


    Habe es dann auch geschafft, die IP zu ändern, so dass dann auf 127.0.0.1 und Port 15779 connected wird. Aber wie könnte ich jetzt den Port ändern?
    Der Port sollte ja eigentlich etwas mit 61, 163 zu tun haben:

    Code
    1. struct sockaddr_in {
    2. short sin_family;
    3. u_short sin_port;
    4. struct in_addr sin_addr;
    5. char sin_zero[8];
    6. };


    Wenn ich bspw. 61 zu 60 ändere, dann kommt auch der C9 Fehler. Wie also komme ich von 15779 auf 61, 163 bzw. von einem beliebigen Port auf diese zwei Bytes?

    Habe die DLL jetzt erstellt und mit C# versucht, sie in den RSRO Client zu injecten, allerdings passiert nichts.
    Um die DLL zu injecten, benutze ich folgende Klasse, die ich im Internet gefunden habe.



    Nachdem ich dann DoInject aufrufe,

    Code
    1. InjectMe.Inject.DoInject(SRO, Application.StartupPath + "\\dll.dll", out error)


    direkt nachdem ich den sro_client gestartet habe, startet es ganz normal. Normalerweise müsste dann ja der C9 Fehler kommen.
    DoInject liefert auch true zurück.

    hm also ich hab auch noch mal nach geguckt und bekomme für 44-20-00-00 -> 2044 -> 8260 raus, dass das der skill "SKILL_CH_COLD_SHIELD_B_03" ist.
    weiß aber nicht ob es das richtige ist, weil ich für den zweiten skill nichts mehr finden kann, weil ich auch nich mehr weiß aus welcher pk2 ich die skilldata habe.