DLL Injection



  • Markymark schrieb:

    gibt es da eine begrenzung?

    quatsch wieso sollte es



  • helferlein schrieb:

    welchen fehler? poste den bitte ich kann leider nicht so gut hellsehen 😃

    DLL enthält Nicht-ASCII-Zeichen. Die DLL kann möglicherweise auf einem Computer mit einer anderen ANSI-Codepage als "1252" nicht geladen werden.

    #include <windows.h>
    
    HINSTANCE hInstDLL;
    
    extern "C" void __declspec(dllexport) Funktion()
    {
        Beep(1000, 1000);
    }
    
    BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
    {
       hInstDLL = hInst;
       return TRUE;
    }
    


  • sorry aber der dll-code enthällt keine nicht ansi zeichen

    wenn du den dateinamen meinst, dann kann das probleme geben.

    wenn das unicode zeichen, was sich anscheinend gut in den 14 zeilen versteckt
    hällt, nichts mit dateinamen, funktionsnamen oder textausgabe funktionen zu tun
    hat, kannst du sowiele davon haben wie due willst. ist ja nur eine 2-Byte speichereinheit,
    die sollte der computer wohl verkraften.

    eine begrenzung in der dll sehe ich vllt ab 4GB sonst nirgentwo.

    das teil sollte ohne probleme kompilieren, vorrausgesetzt das ist der ganze code



  • wenn ich __declspec(dllexport) wegmache dann kommt der Warning nicht mehr aber ich brauche das ja



  • also ich muss einen HANDLE und einen CHAR Array übergeben.
    Ich habs mal so versucht:

    // alte
    struct INJECTSTRUCT
    {
          fpLoadLibrary LoadLibrary;
          fpGetProcAddress GetProcAddress;
          TCHAR path[255];
          TCHAR func[255];
    };
    // neue struct mit params
    struct params
    {
    	HANDLE Proc;
    	TCHAR NewAppName[200];
    };
    ----
    
    params p1; 
    p1. = // mit werten gefüllt
    p1. = // mit werten gefüllt
    ------
    
    				  funcsize = (DWORD)threadend-(DWORD)threadstart;
    				  start = VirtualAllocEx(hackProcess, 0, funcsize+sizeof(INJECTSTRUCT), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    				  WriteProcessMemory(hackProcess, start, (LPVOID)&is, sizeof(INJECTSTRUCT), NULL);
    				  thread = (LPVOID)((DWORD)start+sizeof(INJECTSTRUCT));
    				  WriteProcessMemory(hackProcess, thread, (LPVOID)threadstart, funcsize, NULL);
    				 // das hier ist neu VirtualAllocEx(hackProcess, 0, sizeof(params), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    				  // das hier ist neu WriteProcessMemory(hackProcess, 0, (LPVOID)&p1, sizeof(params), NULL);
    				  CreateRemoteThread(hackProcess, 0, 0, (LPTHREAD_START_ROUTINE)thread, start, 0, 0);
    

    Ich habe es versucht, aber ich glaube kaum, dass es richtig ist.



  • "(LPVOID)&p1" ist im "hackProcess" ungültig bzw. ist es nicht das, was es im eigenen Prozess ist. Schreib die "params" mit in die "INJECTSTRUCT".



  • ok, jetzt sieht meine INJECTSTRUCT so aus.
    und wie erhalte ich jetzt die 2 Parameter in der DLL?
    die struct auch in die DLL tun und eine variable davon
    bei readprocessmemory angeben? wie muss ich readprocessmemory ausfüllen damit es klappt weil das Proc handle für OpenProcess will ich ja übergeben OO

    struct INJECTSTRUCT
    {
          fpLoadLibrary LoadLibrary;
          fpGetProcAddress GetProcAddress;
          TCHAR path[255];
          TCHAR func[255];
    	  HANDLE Proc;
    	  TCHAR newAppName[200];
    };
    


  • oh man schau solche leute, die 0 ahnung haben, was sie tun, pantschen mit sowas rum. das KANN NICHT gutgehen. außerdem sind HANDLE prozessbezogen und sind im anderen prozess GAR NICHT GÜLTIG!!!



  • aber char geht doch oder? char alleine würde auch reichen. Also wie bekomme ich die daten im zielprozess?



  • ihr habt recht ich habe mich überschätzt.
    Ich kenne jedoch noch eine leichtere Methode

    // in der exe
    SendMessage(FindWindow(0, TEXT("WindowName")), WM_USER + 1, 0, (LPARAM)name);
    // in der DLL
    	case WM_USER + 1:
    		 MessageBox(0, (TCHAR*)lParam, (TCHAR*)lParam, 0);
    		 return TRUE;
    

    warum ergeben sich da nur seltsame zeichen?



  • schonmal was von virtuellen adressen gehört? bitte tue dir und uns einen gefallen und eigne dir erst die grundlagen an, bevor du dich an fortgeschrittenen themen wie api hooking und dll injection befasst. 👎

    das buch von "advanced windoof" bzw. "windows programmierung für experten" von jeffrey richter bietet sich dafür an.


Anmelden zum Antworten