DDL Injection



  • Clash schrieb:

    Die Bits in deinem RAM gehören dir.

    guter Spruch *gemerkt* 😉

    greetz KN4CK3R


  • Mod

    ddl schrieb:

    Irgendwie hört sich das nach nicht legalen Aktionen an^^

    Jupp. Es gibt sehr wenig legale Anwendungsbereiche.
    Ein Grund, dass ich solche Threads meistens gar nicht beachte 😉

    Meistens geht es um das Hacken von Spielen, um das (evtl. illegale) Abfangen von Tastatureingaben.
    Allerdings werden DLLs auch injeziert wenn es um globale Hooks geht. Hier gibt es manchmal vernünftige Anwendungsbereiche.
    Manchmal möchte man Programmen ene Zusatzfunktion verpassen, die es aufwertet... (oder aber auch nicht).

    In jedem Fall nimmt in diesen Foren DLL-Injection und Hooks
    Just my 2 cents.



  • Hört sich ganz interessant an, aber ich will nix Ilegales machen kann man auch in so einfache Programme Injecten ?

    z.b.

    #include <iostream>
    
    int main()
    {
    std::cout<<"hallo";
    return 0;
    }
    

    Weil dann schau ich mir das auch mal an (:

    Ach nochwas muss man für die Sachen gut Assembler können?



  • Nochmal: Du darfst mit deinen Bits machen was du willst.
    Zu deinen Fragen: Ja und Nein



  • versteh ich nich. 😕



  • ddl schrieb:

    versteh ich nich. 😕

    Clash will Dir sagen:
    Solange Du auf Deinem Rechner (in Deinem RAM, mit Deinen Bytes, Bits etc.) arbeitest, machst Du nix illegales.
    Auch in so einfache Programme kann man Code injecten.
    Assemblerkenntnisse sind nicht erforderlich.



  • achso ok^^



  • Kennt jemand ein Tut zu sowas?^^



  • // INJECTION
    //
    // HANDLE processHandle = OpenProcess(...);
    // string moduleFullPath = "C:\\....\\my.dll";
    
    void* remoteMemoryHandle = VirtualAllocEx(processHandle, 0, moduleFullPath.size(), MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(processHandle, remoteMemoryHandle, moduleFullPath.c_str(), moduleFullPath.size(), 0);
    FARPROC loadLibraryAddress = GetProcAddress(GetModuleHandle("KERNEL32"), "LoadLibraryA");
    void* remoteThreadHandle = CreateRemoteThread(processHandle, 0, 0, reinterpret_cast<PTHREAD_START_ROUTINE>(loadLibraryAddress), remoteMemoryHandle, 0, 0);
    WaitForSingleObject(remoteThreadHandle, INFINITE);
    CloseHandle(remoteThreadHandle);
    VirtualFreeEx(processHandle, remoteMemoryHandle, 0, MEM_RELEASE);
    
    // EJECTION
    //
    // HANDLE processHandle = OpenProcess(...);
    // HMODULE moduleHandle = Module32First, Module32Next, ...
    
    FARPROC freeLibraryAddress = GetProcAddress(GetModuleHandle("KERNEL32"), "FreeLibrary");
    void* remoteThreadHandle = CreateRemoteThread(processHandle, 0, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(freeLibraryAddress), moduleHandle, 0, 0);	
    WaitForSingleObject(remoteThreadHandle, INFINITE);
    CloseHandle(remoteThreadHandle);
    


  • @clash:

    du hast die abschluß-null vergessen 😉



  • Meinst du "sizeof(x.c_str()) != x.size()" ?
    Stimmt, dummer Fehler.
    Hmm, hat trotzdem immer funktioniert. Glück gehabt?


Anmelden zum Antworten