[C/C++] Frage zu *.dll

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von NobodyPerfect, 27. August 2009 .

  1. 27. August 2009
    Frage zu *.dll

    Moin - ich habe ein frage.. eine *.dll ist in c++ ja wie folgt aufgebaut:

    PHP:
    #include "StdAfx.h"

    extern  "C"  _declspec ( dllexport int _stdcall Addiere ( int a int b )
    {
        return (int)
    a + b ;
    }

    BOOL APIENTRY DllMain ( HINSTANCE hinstDLL DWORD fdwReason LPVOID lpvReserved )
    {
        switch (
    fdwReason )
        {
            case 
    DLL_PROCESS_ATTACH :
                            
    // Code beim Laden in den Adressraum ausführen...
                
    break;            
        }        
        return 
    TRUE ;
    }  

    Nun zu meiner Frage... ich möchte bestimmten code nur ausführen wenn die *.dll Injektiert wird und nicht auch, wenn ich z.B. die Funktion Addiere aufrufe...ist das möglich? Wenn ja wie?

    Ich hoffe Ihr habt meine Frage verstanden.

    MfG


    EDIT: Keiner eine Lösung?^^
     
  2. 27. August 2009
    AW: Frage zu *.dll

    Die Frage ist wie du die DLL injektierst, wenn die DLL geladen und wieder freigegben wird über LoadLiberary zum Beispiel, wird der Eintrittspunkt der Bibliothek aufgerufen also die Funktion 'DllMain'.

    Mfg Rushh0ur
     
  3. 27. August 2009
    AW: Frage zu *.dll

    Sie wird im 1. Fall einfach mit einem Injektor injektiert und im 2. Fall wird z.B. einfach Addieren gecallt... nur springt er bei beides mal an...
     
  4. 27. August 2009
    AW: Frage zu *.dll

    Du meinst das jedes mal dein Antivir anspringt wenn du dein Programm startest?

    Zitat aus dem letzten Beitrag aus diesem Thread:
    Mfg Rushh0ur
     
  5. 27. August 2009
    AW: Frage zu *.dll

    Nein, das meine ich nicht... ich möchte blos das er einen bestimmten code nicht ausführt, wenn ich eine Funktion in der dll calle sondern nur den code ausführt, wenn die dll injektiert wird.... jedoch denke ich das das nicht geht richtig? Daher müsse ich 2 getrennte dlls machen??
     
  6. 28. August 2009
    AW: Frage zu *.dll

    Ja ich denke du brauchst 2 DLLs. Der Code in DllMain wird immer aufgerufen, sobald die Dll "geladen" wird. Ob das jedoch durch DLL-Injection oder durch einen normalen Funktionsaufruf passiert, ist egal.
     
  7. 28. August 2009
    AW: Frage zu *.dll

    kannst du nicht ne bool variable erstellen, die in dllMain jedes mal auf True gesetzt wird und in denn einzelnen Funktionen auf False?

    zuerst wird sie immer auf True gesetzt aber wenn eben ne Funktion aufgerufen wird, wird sie sofort wieder auf false gesetzt. Am ende eben ne Abfrage, bei True kann es ja dann kein Call gewesen sein.

    Bin leider noch nicht so bewandert in C++ daher ist das einfach nur nen Denkansatz.
     
  8. 28. August 2009
    AW: Frage zu *.dll

    Das würde nur funktionieren, wenn er die funktion vor der dllmain aufrufen würde, was aber nicht der Fall ist
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.