Microsofts Detours Library 2.1 mit BCB?



  • In True_Send stand ja die richtige Addy, von daher muss es geladen sein, habs ja nachgeguckt.
    Stimmt, an den Error code hab ich net gedacht und da ich den nun kenne, deprimiert es mich noch mehr xP.
    Fehlercode: (8) ERROR_NOT_ENOUGH_MEMORY kam bei rum. Und wenn ich mir die detours.cpp anschaue, gibts 3 möglichkeiten, die relevant wären.
    Irgendeine Idee? 😞
    Soviel Aufwand fürn kleinen Detour. ^^



  • retn schrieb:

    Irgendeine Idee? 😞

    Eine Debug-Version von detours.lib erstellen und mal durchsteppen? 🙂



  • geht net klar 😃
    hab mich auf die detour lib gefreut wien fuchs... und nu 😣
    nunja mal sehen, dtrotzdem thanks 😃



  • re 🙂

    also ich hab mal wieder ka. 😃

    in vc08 hab ich die detours ohne probs hinbekommen. jetzt zu borland.
    bin noch der überzeugung, dass ich die libs, dlls net richtig erzeuge, bzw. falsch oder garnet einbinde.

    also ich erstelle eine statische lib mit folgenden dateien:
    creatwth.cpp
    detours.cpp
    image.cpp
    disasm.cpp
    modules.cpp

    danach erstelle ich eine dll mit:
    detoured.cpp
    detoured.h

    mit extern "C" __declspec( dllexport ) HMODULE WINAPI Detoured();
    ein und kompeliere.

    k. klappt soweit.

    um detours zu verwenden, adde ich zu meinem dll projekt die statische lib.
    dann kommt folgendes
    [Linker Error] Error: Unresolved external 'Detoured' referenced from C:\DETOUR_BCB\DETOURS.LIB|detours

    so, wie verbinde ich jetzt die detoured.dll mit meiner dll und der statischen lib "detours"? 🙂

    hoffe, ihr guckt noch in den thread.

    greetz



  • retn schrieb:

    um detours zu verwenden, adde ich zu meinem dll projekt die statische lib.
    dann kommt folgendes
    [Linker Error] Error: Unresolved external 'Detoured' referenced from C:\DETOUR_BCB\DETOURS.LIB|detours

    Dann füge doch die Importbibliothek für detoured.dll auch hinzu 😉



  • will net ^^ ahhhh
    kannst du mir vll. die komplette lib,dll an wakkaelpaso@gmx.net schicken? 😃
    greetz



  • @retn: Steht doch schon da wie du die DLL/LIB erzeugen musst.

    Ich hab mir das andere "Problem" noch nicht angesehen, bin noch nicht dazu gekommen.



  • egal wie ich die kompeliere, es taucht immerwieder ein internes problem auf. wenns bei euch klappt, machts doch net nen umstand kurz zu schicken oder? ^^



  • retn schrieb:

    es taucht immerwieder ein internes problem auf.

    Wenn du das etwas genauer spezifizieren könntest, könnte man dir vielleicht auch helfen.

    retn schrieb:

    wenns bei euch klappt, machts doch net nen umstand kurz zu schicken oder? ^^

    Doch. Meines Wissens untersagt Microsoft die Weitergabe der Detours-Quelldateien.



  • retn schrieb:

    Fehlercode: (8) ERROR_NOT_ENOUGH_MEMORY kam bei rum. Und wenn ich mir die detours.cpp anschaue, gibts 3 möglichkeiten, die relevant wären.

    Hatte ja schon eräwhnt, was für ein Fehler kommt, wenn ich sie mal richtig kompeliere. Da aber ihr nicht so ein Problem habt, kann es ja nur sein, dass ich immernoch was falsch mache.

    Eine Sache die mir auffiel ist, dass wenn ich die Libs mitkompeliere und ein Detour starte, dass er sich nicht an die DETOURED.DLL heftet, so wie in der Visual C++ Version.

    Ansonsten wäre es genial, wenn einer von euch hier ein komplettes Tutorial für den Erstellungsvorgang für Borland macht. Das alles ist doch etwas sehr zerstreut auf der Seite.

    greetz 🙂



  • retn schrieb:

    retn schrieb:

    Fehlercode: (8) ERROR_NOT_ENOUGH_MEMORY kam bei rum. Und wenn ich mir die detours.cpp anschaue, gibts 3 möglichkeiten, die relevant wären.

    Hatte ja schon eräwhnt, was für ein Fehler kommt, wenn ich sie mal richtig kompeliere. Da aber ihr nicht so ein Problem habt, kann es ja nur sein, dass ich immernoch was falsch mache.

    Ah, du meinst immer noch den Laufzeitfehler. Bei deinem Post dachte ich zunächst, der Fehler träte beim Kompilieren auf.

    retn schrieb:

    Eine Sache die mir auffiel ist, dass wenn ich die Libs mitkompeliere und ein Detour starte, dass er sich nicht an die DETOURED.DLL heftet, so wie in der Visual C++ Version.

    Das verwundert mich; eigentlich müßte das gleichermaßen der Fall sein.
    Hast du mal ein Debug-Build erstellt? Was passiert in DetourAttachEx() an den Stellen, wo Detoured() explizit aufgerufen wird?

    retn schrieb:

    Ansonsten wäre es genial, wenn einer von euch hier ein komplettes Tutorial für den Erstellungsvorgang für Borland macht. Das alles ist doch etwas sehr zerstreut auf der Seite.

    Das werde ich bei Gelegenheit mal angehen.



  • 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.


Anmelden zum Antworten