Microsofts Detours Library 2.1 mit BCB?



  • ist noch jemand da, der sich mit dem thema beschäftigt?
    greetz



  • Sorry für Doppelpost. :).

    Hab folgendes Problem...

    Vorab Infos:
    Hab folgende Libs/DLLs erzeugt.

    Eine statische lib mit folgenden Dateien:
    creatwth.cpp
    detours.cpp
    image.cpp
    disasm.cpp
    modules.cpp

    Eine detoured.dll:
    detoured.cpp
    detoured.h

    mit extern "C" __declspec( dllexport ) HMODULE WINAPI Detoured();

    Alles klar soweit.
    Dann habe ich meine eigentliche DLL erstellt, dazu die detours.lib, detoured.lib sowie headers
    hinzugefügt.

    Kompeliere das Fehlerfrei. Folgender Code ist bis jetzt dabei:

    case DLL_PROCESS_ATTACH:
    
    			if (DetourRestoreAfterWith()==ERROR_INVALID_OPERATION)
    				MessageBox(0,"fu","restore",0);
    
    			sprintf(buf, "Error: %d, GetLastError: %d", error, GetLastError());
    			MessageBox(0,buf,"Info",0);
    
    			True_Send  = reinterpret_cast <PSEND> (GetProcAddress (GetModuleHandle (TEXT ("ws2_32.dll")), "send"));
    			True_Recv  = reinterpret_cast <PRECV> (GetProcAddress (GetModuleHandle (TEXT ("ws2_32.dll")), "recv"));
    
    			DetourTransactionBegin();
    			if (!DetourUpdateThread(GetCurrentThread())) MessageBox(0,"fu","update",0);
    			if (DetourAttach(&(PVOID&)True_Send, MySend) !=NO_ERROR) MessageBox(0,"fu","attach",0);
    			//DetourAttach(&(PVOID&)True_Recv, MyRecv);
    			if ( (error = DetourTransactionCommit()) != NO_ERROR) MessageBox(0,"fu","commit",0);
    
    			sprintf(buf, "Error: %d, SendAddr: %x", error, True_Send);
    			MessageBox(0,buf,"Info",0);
    
    			break;
    

    Das witzige dabei ist, dass ich jetzt für jeden Funktionsaufruf eine Messagebox bekomme, ergo Fehler. Hab direkt LastGetError nach dem ersten Funktionsaufruf von DetourRestoreAfterWith aufgerufen und was kam? Fehlercode: 126... ergo stimmt da was gewaltig net.

    Der Fehlercode besagt, dass er gewisse ModuleHandles net findet. Na toll, ich kann damit wenig anfangen, leider -.-
    greetz



  • Versuche mal, nicht die vom C++Builder übersetzte detoured.dll, sondern die als Binary beigelegte Version mithilfe von IMPLIB einzubinden.



  • Heyho,

    hab über "implib detoured.lib detoured.dll" die importlib erstellt.
    meinem projekt hinzugefügt, er linkt jetzt auf die von ms erstellte dll.
    aber dennoch bleiben die fehler.

    greetz



  • Dann bleibt dir wohl wenig anderes übrig, als mal ein Debug-Build der Detours-Library zu erstellen und durch den Detours-Quelltext durchzusteppen.



  • also, ein debugbuild habe ich auch probiert...
    kam nur bei rum, dass der dllentrypoint meiner dll net gefunden werden konnte, was ich überhaupt net verstehe.
    und auf rumdebuggen, neeee, dazu hab ich net die zeit atm.
    haste noch ne idee?

    hab auch mal den depencywalker angeschmissen, und die fehlende dwmapi.dll ergänzt, daran lags auch net.., liegt wohl alles an meiner dll.

    was kann man denn noch grossartig falsch machen .



  • retn schrieb:

    und auf rumdebuggen, neeee, dazu hab ich net die zeit atm.

    Du meinst, wenn du die Zeit nicht investieren willst, tun das hier vielleicht andere?

    Dann frohes Warten.



  • Was soll denn jetzt so ein Spruch. -.-

    Ich bin alles andere, als jemand, der sich von anderen Leuten die Arbeit machen lässt, das versichere ich dir. Zudem ist dies ein Forum und wenn jemand mehr KnowHow hat und vll. diese Problematik schon kennt, isses einfacher vorher zu fragen als 2 Wochen rumzudebuggen, wobei beides zweifelsfrei aufs gleiche hinausführt.

    Und bei der Wirtschaftslage und einem 50+ std job, fällt es nicht leicht ne ms library zu debuggen, wobei es hier im Forum schon 2 fertiggebracht haben, ohne zu debuggen und nicht mal ne Open Source Library sharen.

    Greetz -.-



  • retn schrieb:

    Was soll denn jetzt so ein Spruch. -.-

    Wenn das nicht der Hintergedanke war, so verzeih.

    retn schrieb:

    Ich bin alles andere, als jemand, der sich von anderen Leuten die Arbeit machen lässt, das versichere ich dir. Zudem ist dies ein Forum und wenn jemand mehr KnowHow hat und vll. diese Problematik schon kennt, isses einfacher vorher zu fragen als 2 Wochen rumzudebuggen, wobei beides zweifelsfrei aufs gleiche hinausführt.

    Ja, natürlich.

    Da meine Zeit momentan auch etwas knapper ist als sonst, hat mich die Haltung, die ich aus deinem Post herauslas, leicht gereizt. Wobei natürlich zutrifft, daß man das keineswegs herauslesen /muß/, wenn man dir nur konstruktive Vorgehensweise unterstellte.

    Dein Problem ist mir beim Umgang mit Detours jedenfalls noch nicht begegnet. Du könntest eventuell versuchen, die beigefügten Samples - nach dem Applizieren der weiter oben diskutierten Anpassungen im Detours-Quelltext und in der Verwendung - zu kompilieren und zu testen. Wenn du auch dabei denselben Fehler erhältst, hast du möglicherweise beim Bearbeiten von Detours etwas aus dem Gefüge gebracht.



  • Ich bin ja für jede Hilfe dankbar, aber ich bin echt am Ende mit meinem Latein.
    Kannst du mir nicht einfach mal deine kompilierte Version schicken?
    Greetz



  • retn schrieb:

    Kannst du mir nicht einfach mal deine kompilierte Version schicken?

    http://mb.audacia-software.de/pfiles/detours21-bcc.zip
    (Kompiliert mit C++Builder 2009, aber da es sich um ein C-API handelt, sollte die Bibliothek auch mit früheren BCC-Versionen einsetzbar sein.)



  • hammer! dank dir, klappt wunderbar.
    ich benutze 06, ist also abwärtskompatibel :D.


Anmelden zum Antworten