Twice Detour Problem

  • Servus,


    hab mich mal annen Loader mit redirect für Esro gesetzt. Hab versucht das ganze mit Twice Detour zu machen, die DLL wird zwar injected, aber der client verbindet ganz normal. Hab den Code genommen wos drum ging, den ISro client nach SwSro zu verbinden.


    Sieht jetzt so aus:


    Zu der MessageBox komm ich nich mal...


    Gruß
    gabs


    EDIT: Sorry für die codeformatierung, habs jetz 3mal versucht besser zu machen, keine Ahnung woher das kommt... :(


    EDIT by bloodman: habs mal für dich formatiert...
    EDIT by kuh: Wollte ich auch grad, aber dann ist mein WLAN abgekackt ^^

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von bloodman ()

  • Wie sieht dein Hook aus?
    Bist du sicher, dass die connect Funktion benutzt wird?
    Wird auch dieser Port benutzt?


    MfG

  • ja, connect wird benutzt, habs jetzt mittlerweile soweit, dass ich in den Block reinkomm, wo die Messagebox erscheint. Jetz stürzt allerdings sro ab ("sro_client.exe hat ein Problem festgestellt.")


    Code
    1. typedef int (WINAPI * tconnect)(SOCKET s, const sockaddr *name, int namelen);
    2. tconnect oconnect;
    3. ...
    4. MODULE hWSLibrary = GetModuleHandleA("ws2_32.dll");
    5. oconnect = (tconnect)DetourCreate((LPVOID)GetProcAddress(hWSLibrary, "connect"), (LPVOID)myconnect, 5);

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Die MessageBox wird angezeigt und direkt danach stürzt das Spiel ab?
    Mal mit Olly geguckt, was da vor sich geht?


    MfG

  • Das Problem ist, ich kenn mich mit Olly noch nich so gut aus. Adressen finden ist eigentlich kein Problem, aber alles was drüber rausgeht beherrsch ich nicht. Wie soll ich da vorgehn?

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Du startest SRO, attachst mit Olly, setzt bei den Settings "Break on new Module" wirst dann stoppen wenn du die DLL injectest und setzt dann einen BP auf die MessageBox die du per String-Search finden kannst.


    MfG

  • Hmm, beim starten macht mich gameguard drauf aufmerksam dassn debugger am laufen is und ich ihn beenden soll, von daher komm ich gar nich soweit...

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Guck dir mal an, in welchem Modul die Exception auftritt.
    Es kann auch sein, dass du auf der entsprechenden Adresse keinen Server hast und die Verbindung somit fehlschlägt. Das sollte SRO aber eigentlich handlen...


    MfG

  • eben, das wundert mich auch, denn eigentlich kommt ja sone messagebox mit ner etwas kryptischen nachricht...
    hab bis jetzt allerdings auch kein proxy am laufen gehabt weil auf eben diese messagebox gewartet hab. Ich probiers mal mit.

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Ok, ohne relevanten Grund hat es jetzt auf einmal funktioniert. Allerdings hab ich jetzt nach längerer Zeit die Benutzerkontensteuerung rausgemacht was jetzt irgendwie dazu geführt hat dass ich nicht mehr in den DLL_PROCESS_ATTACH Block reinkomm. Alles was in der DllMain steht wird ausgeführt, habs mit ner MessageBox probiert, nur dwReason scheint nicht mehr DLL_PROCESS_ATTACH zu sein...


    EDIT: Ok, es scheint als ob es Schwierigkeiten mit den Ini Funktionen hat... (GetPrivateProfileString usw), denn die MessageBox vor der Funktion wird angezeigt, die danach nicht mehr...


    Code
    1. case DLL_PROCESS_ATTACH: { CreateMutexA(NULL,FALSE,"Silkroad Online Launcher"); CreateMutexA(NULL,FALSE,"Ready");
    2. MessageBoxA(NULL,"test","Attached!",MB_OK); GetPrivateProfileStringA("REDIRECT","ip","NULL",loginIP,255,"gwLoader.ini"); loginPort = GetPrivateProfileIntA("REDIRECT","port",0,"gwLoader.ini");
    3. MessageBoxA(NULL,loginIP,"Attached!",MB_OK);
    4. if(loginIP == "NULL" || loginPort == 0) { MessageBoxA(NULL,"Could not read the config file (gwLoader.ini)","Error",MB_ICONERROR | MB_OK); return TRUE; }
    5. HMODULE hWSLibrary = GetModuleHandleA("ws2_32.dll"); oconnect = (tconnect)DetourCreate((LPVOID)GetProcAddress(hWSLibrary, "connect"), (LPVOID)myconnect, 5); }


    EDITEDIT: Tut mir leid, ich weiß nich was es mit der codefordmatierung auf sich hat, ist jetz schon das zweite mal...

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von gabs ()

  • Code
    1. loginIP == "NULL"


    BItte?


    Du solltest breaken, da du in einem switch bist, sonst wird alles danach (bis es zum break kommt oder der Switch vorbe ist) auch ausgeführt.


    MfG

  • loginIP = "NULL" kommt vom standardwert falls die ini nich gelesen werden kann. Ich habs einfach lieber wenn ich da NULL oder sonst n string nehm anstatt als standardwert einfach "" anzugeben.

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Ups, da hat sich n bisschen C# reingeschmuggelt :D...
    Bin mit den C - Strings in C++ nich so vertraut^^


    Allerdings bin ich noch zu keiner Problemlösung gekommen, es springt halt bei den Lesefunktionen für die Ini datei wieder raus... (schon bei der ersten (GetPrivateProfileString))

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

  • Wilde Vermutung, aber es könnte sein, dass du den ganzen Pfad angeben musst und nicht nur den Dateinamen.


    MfG

  • Hmm, kann eigentlich nicht sein, hab im loader in c# die inifunktionen per dll drin, da akzeptierts den relativen pfad
    EDIT: Habs mit dem absoluten Pfad probiert, geht leider nich :( ich probiers mal mit ner normalen datei und nicht mit den ini Funktionen.

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von gabs ()

  • habs jetzt ohne die ini funktionen gelöst, ganz normal mit den dateifunktionen aus fstream

    Mein Affenkasten :)


    Intel Core i7 920 @ 3,4 GHz
    11GB Corsair XMS3 DDR3 RAM
    MSI X58 Platinum
    Sapphire HD4870 512MB (GPU @ 820MHz | MEM @ 1050MHz)
    2TB HDD
    60 GB OCZ Agility 3 SSD
    Windows 8 Professional - Dank sei der MSDNAA :)