Beiträge von user000user

    Falls du in der ListBox mehrere Spalten hast, dann kannst du mit der Eigenschaft SubItems auf die nächste Spalte zugreifen.

    Code
    1. SqlDataReader ItemReader = SearchItems.ExecuteReader();
    2. while (ItemReader.Read())
    3. {
    4. object AllItems = ItemReader["ID"];
    5. object nächsteSpalte = ItemReader["Spalte2"];
    6. listBox2.Items.Add(AllItems.ToString()).SubItems.Add(nächsteSpalte.ToString());
    7. }


    Falls du noch mehr Spalten hast, kannst du die auch mit SubItems.AddRange(string[] items) füllen.


    Edit: Geht nur mit einem ListView.

    Kenne mich jetzt auch nicht so gut damit aus, aber wenn die Zahl vorzeichenbehaftet ist(was sie in diesem Fall ist, da sonst keine negative Zahl bei einem Überlauf einer Addition heraus kommen kann), ist das höchstwertige Bit negativ.
    Bei einer Länge von 6 Bit wäre das also -32 und entspricht einem Werte Bereich von -32( 100000 ) bis 31( 011111 ). Wenn du jetzt also 2 Zahlen miteinander addierst, die ein Ergebnis >31 haben, wird das erste Byte gesetzt und die Zahl ist negativ.
    Bsp:

    Code
    1. 010101 + 010000 = 100101
    2. 21 + 16 = -27


    Gleiches gilt dann auch für die Addition von negativen Zahlen, nur eben umgekehrt.
    Korrigiert mich, falls ich falsch liege.^^

    Danke für den Release. Allerdings habe ich Probleme damit, Dateien auszulesen, die direkt in der Pk2 sind und in keinem Unterordner. Also Dateien wie sv.t, type.txt, etc...
    FileExists liefert immer false und getFile funktioniert auch nicht.

    Auch komisch ist, dass ich anscheinend nicht dass richtige Socket aus ECX bekomme. Beim Versuch die Protokoll-Informationen mit WSADuplicateSocket zu bekommen, sagt er mir dann, dass das Socket kein richtiges Socket ist (WSAENOTSOCK) und wenn ich die unveränderten Parameter pushe, kommt auch der C9 Fehler bzw. gibt die connect Funktion -1 zurück, mit dem gleichen Socket Error.

    Komischerweise bekomme ich die Fehlermeldung aber auch, obwohl er eine Verbindung zum Proxy aufbaut und der LoginServer nicht offline ist.
    Über den edxLoader funktioniert es ohne Probleme.

    Das ist die Funktion, die den Memory patcht, um beim connecten meine eigene Funktion aufzurufen.


    Wenn ich das custom_call Array so habe, wird die Funktion auch gecalled und eine Verbindung zum Proxy aufgebaut, allerdings kommt trotzdem der Error mit der (9).
    Wenn ich die NOPs vor den Call mache, crasht der Client bevor er in "Redirect" ankommt.


    MS Detours habe ich mir auch schon angeguckt, bzw. die Source vom EDX Loader, allerdings würde ich es gerne erst mal ohne versuchen.


    Edit: Habe vergessen das Offset der Funktions-Addresse zu ändern, deswegen crashte der Client. Der andere Fehler besteht allerdings weiterhin.
    Edit2: Hier nochmal ein Bild von der Fehlermeldung:

    Hi!


    Ich bin grade dabei einen Loader für Silkroad zu machen, der auch die IP redirecten kann. Dazu patche ich den Memory vom sro_client, so dass statt der connect Funktion meine eigene Funktion gecalled wird.
    Die connect Funktion sieht ja so aus:

    Code
    1. 0045DEE4 6A 10 PUSH 10 ; AddrLen = 10 (16.)
    2. 0045DEE6 57 PUSH EDI ; pSockAddr
    3. 0045DEE7 51 PUSH ECX ; Socket
    4. 0045DEE8 FF15 30B6E400 CALL DWORD PTR DS:[<&WS2_32.#4>] ; WS2_32.connect


    Als erstes habe ich dann versucht, den Call meiner eigenen Funktion direkt bei 0045DEE4 zu machen. Meine Funktion wird dann auch aufgerufen und der Client connected auch zum Proxy, allerdings kommt trotzdem der Fehler mit der 9 in den Klammern.
    Ich denke mir, dass es daran liegt, dass der Client nach dem Call bei 0045DEE9 weiter macht und damit nicht ganz zurecht kommt, da ich den Memory vorher in meiner Funktion wieder zurück patche.
    Deswegen habe ich versucht, die ersten 5 Bytes zu NOPen und den Call dann ans Ende zu setzen. Bei dem Versuch wird meine Funktion allerdings gar nicht erst aufgerufen, sondern der Client crasht vorher. Hätte irgend jemand vielleicht eine Idee woran das liegen könnte?


    MfG,
    user000user

    Such am besten nach der SilkroadSecurityAPI und dem simple_proxy von Drew Benton für C#. Dann brauchst du noch ein Tool, mit dem du die Packets von Silkroad sniffen kannst. Ich habe dafür meistens den phConnector oder den EDX-Loader mit der Packet Auto-Parser Funktion genommen.
    Dann musst du gucken, welche du von den Packets brauchst und wie deine Informationen darin gespeichert sind. Über den simple_proxy kannst du dann eine Verbindung zu Silkroad aufbauen und musst die Packets, die normalerweise vom Clienten an den Server geschickt werden, über dein Programm erstellen und über das Proxy an Silkroad senden.
    Irgendwann müsste dann das Packet über die Server Informationen kommen, dass du dann nur noch auswerten musst. ;)

    Du musst noch einstellen, welche Items er aufheben soll. Dazu kannst du auf der linken Seite den Filter einstellen und dann auf "Filtern" klicken. Dann sollten dir die Items in der Box darunter aufgelistet werden. Da kannst du dann die Items auswählen und mit Rechtsklick einstellen, was damit gemacht werden soll.

    Ist es nicht einfacher, die ID aus den Textdateien zu einem int zu konvertieren und dann mit der ausgelesenen ID des Packets zu vergleichen?
    Dein Item-Parsing sieht noch nicht ganz vollständig aus ;) Bei dir wird nur die Position ausgelesen und dann ein dword, dass meistens 0 ist(habe bis jetzt nur bei Dimension Holes einen anderen Wert gesehen).
    Der Aufbau fast aller Stackable-Items sieht etwa so aus:

    Code
    1. byte - position
    2. dword - ? (meistens 0)
    3. dword - item id
    4. word - quantity


    Das würde auch erklären, wieso die erste id auf dem Screen 0 ist und die id vom zweiten Item mit 0C(=12 => Anzahl der Scrolls vom ersten Slot) anfängt.