tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
450
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    So ich bin es schon wieder

    Weiß jemand wie man eine DLL in ein Programm reincompiled, und dann wenn man das Programm ausführt, sollte diese DLL aus dem Programm rauskopiert werden. Ich möchte dies bewerkstellen, ohne ein Installshield zu benutzen oder so. Ich hoffe ihr versteht was ich mein

    thx Executer
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  2. #2
    Avatar von BadMourning
    BadMourning BadMourning ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    158
    Falls die Dll von dir ist, dann solltest du vielleicht darüber nachdenken,
    aus deiner Dll eine statische Bibliothek (.lib) zu machen, dein Ansatz
    widerspricht jedenfalls eigentlich der Philosophie einer Dll.

    Oder wie wäre es mit einem selbstextrahierenden Zip-Archiv ?

    BadMourning
     

  3. #3
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    naja für nen Hook z.B braucht man soweit ich weiß ne Dll...
    Und ein selbstextrahierendes Zip-Archiv möchte ich nicht.

    //Edit: sorry hab vergessen zu sagen dass die Dll von mir ist
    Geändert von Executer (12.02.05 um 18:41 Uhr)
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  4. #4
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Was spricht dagegen,die DLL von Haus aus neben deiner .exe liegen zu lassen?

    Ansonsten würde ich in Richtung FindResource, LoadResource, LockResource schielen (ganz stark). Einfach eine binäre Ressource erstellen mit deiner Datei, und dir dann mit den Befehlen oben einen Pointer drauf holen. Das ganze rausschreiben und fettich.
     

  5. #5
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Also bei einem Hook benötigt man nicht unbedingt eine DLL, nur wenn man einen Systemhook erstellen möchte.

    Gruß Daniel
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  6. #6
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    ok danke ich werds mal versuchen wenn ich nicht weiterkomme, meld ich mich wieder
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  7. #7
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    Ich bins schon wieder. Ich habe jetzt die Dll hinzugefügt und sie IDR_DLL genannt und den Resourcentyp DLL.

    mit dem Code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     
    HRSRC temp;
    temp =FindResource(
            NULL, // module handle
            "IDR_DLL",  // pointer to resource name
            "DLL"  // pointer to resource type
    );
    char ch[20];
    int i = GetLastError();
    itoa(i,ch,10);
    bekomme ich den Fehler 1814 welcher besagt, dass der Resourcenname nicht vorhanden sei...
    Kann mir jemand einen Tip geben, wie ich es hinbekomme?

    Danke
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  8. #8
    Shaijan Shaijan ist offline Mitglied Silber
    Registriert seit
    Mar 2004
    Beiträge
    57
    Hi ...

    Du musst den Ressourcen-Namen mit dem Macro MAKEINTRESOURCE umwandeln. Schau dazu mal in die MSDN. Da findest du auch noch Informationen zu Resourcen-Typen, das kann dir evtl auch nützlich sein...

    Gruß
    Shai
     

  9. #9
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    OK vielen Dank für die schnelle Hilfe.

    Für alle die zu faul für die MSDN sind :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
     
    WORD wInteger=IDR_DLL;//name of resource
    char* name;
    name=MAKEINTRESOURCE(
       wInteger  // integer to convert
    );
     
     
     
    HRSRC temp;
    temp =FindResource(
            NULL, // module handle
            name,  // pointer to resource name
            "DLL"  // pointer to resource type
    );

    Nacht allerseits
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  10. #10
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    Sorry die Frage ist sicher nciht die schlauste aber ich komme irgendwie nciht drauf, wie ich jetzt die Datei speichern kann...

    D.h. ich hab das erste Byte durch LockResource erhalten, aber jetzt komm ich nicht mehr weiter
    Kann mir bitte nochmal jemand helfen?
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  11. #11
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Mit SizeofResource() bekommst du die Grösse der Ressource in Bytes zurück.

    Dann machst du mit deinen Lieblingsfilefunktionen ein File auf, schreibst einen Daten-Block mit dem Pointer den du schon hast und der Grösse rein und machst das File wieder zu. Fettich.
     

  12. #12
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    Ich weiß nicht warum mir das ganze so schwer fällt aber wenn cih den folgenden Code benutze,
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     
        FILE *f = fopen("test.dll", "wb"); 
        fwrite( data, size, size,f);
        fclose(f);
        int i = GetLastError();
        char ch[20];
        itoa(i,ch,10);
        MessageBox(ch);

    bekomme ich den Fehler 1784 The supplied user buffer is not valid for the requested operation.

    Die länge der Resource hab ich zuvor bestimmt!
    Geändert von Executer (16.02.05 um 14:04 Uhr)
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

  13. #13
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Die Parameter zu fwrite sind falsch:

    fwrite( data, size, 1, f );

    Welchen Typ hat data? Eventuell musst du auf void* casten:

    void* pData = (void*)LockResource( ... );

    // schnippelschnappel

    fwrite( data, size, 1, f );

    // schnippelschnappelschnappel, das kleine Kroko...
     

  14. #14
    Executer Executer ist offline Mitglied Silber
    Registriert seit
    Jul 2004
    Beiträge
    88
    Vielen vielen Dank für alles *freu*

    Sorry dass ich so oft genervt hab... aber danke an alle die mir bei meinem Problem geholfen haben. Ihr seit echt super

    mfg Executer
     
    "Jeder, der den Ausdruck easy as taking candy from a baby benutzt, hat noch niemals versucht, einem Kind ein Bonbon abzunehmen."
    (Robin Hood ?)

Ähnliche Themen

  1. Ladebalken bei Programmstart
    Von exiter28 im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 13.08.10, 13:43
  2. Dialog bei Programmstart
    Von soeni1987 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 06.12.07, 19:46
  3. Probleme mit Programmstart
    Von Bump Digger im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 24.07.06, 22:41
  4. Login vor Programmstart
    Von mchashi im Forum .NET Archiv
    Antworten: 4
    Letzter Beitrag: 27.03.05, 17:44
  5. Fehler bei Programmstart
    Von Cstar im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 03.07.02, 14:59