[C# Beginner] Dll injection "intern"



  • Klar. Sollte recht einfach sein die DLL einzubette, such einfach mal nach "embedded resource".
    Zum Beispiel Codeproject - Embedding and Using Resources from .Net Assembly. Den Stream könntest du dann einfach in einen Filestream kopieren und schon hast du die DLL wiederals Datei.



  • Scheitert es vielleicht einfach an

    public static int inject(string dllPath, Process tProcess)
            {
                Process targetProcess = tProcess;
                string dllName = Path.GetFullPath(dllPath); // <------------
    

    ?
    Die Variablen-Namen sind dann natürlich verkehrt rum (der Pfad steht in dllName , der Name in dllPath ). Hab halt einfach nur dein Beispiel minimal angepasst - Variablen umbenennen darfst du selbst.

    Davon abgesehen ist natürlich die Art & Weise wie hier mit Encondig.GetBytes() vs. dllName.Length verfahren wird Quatsch.
    Sollte bei CP1252 aber keinen Unterschied machen.
    Und warum nicht gleich LoadLibraryW verwenden?



  • Habe das mit dem Embedded source mal probiert leider nicht das wunschergebniss.

    @Hustbaer Hört sich Interessant an leider verstehe ich noch nicht wie mir der Code Snip, sowie LoadLibraryW weiterhelfen sollen. Könntest du mir da genauere Infos zu geben? Danke 🙂



  • Simpl3x schrieb:

    Habe das mit dem Embedded source mal probiert leider nicht das wunschergebniss.

    Inwiefern? Was klappt nicht, bzw. was genau ist an der Lösung unerwünscht?

    Simpl3x schrieb:

    @Hustbaer Hört sich Interessant an leider verstehe ich noch nicht wie mir der Code Snip, sowie LoadLibraryW weiterhelfen sollen. Könntest du mir da genauere Infos zu geben? Danke 🙂

    Wenn der Pfad zu deiner DLL ein relativer Pfad ist kann es Probleme geben, deshalb solltest du immer absolute Pfade verwenden.
    Und LoadLibraryW solltest du verwenden damit eventuelle Sonderzeichen im Pfad keine Probleme machen. Zwecks Einfachkeit und Kompatibilität ist es ratsam immer explizit Unicode zu verwenden, und nie das Default-Encoding.



  • Wenn ich das ganze richtig verstanden habe, funktioniert das ganze über eine XML?
    Wenn nicht, war ich grade anscheinend zu Unfähig zum googeln. 😕

    Habe leider nur Infos mit XML gefunden, welche mich nicht wirklich weitergebracht haben. Könntest du mir evtl. eine kurze erläuterung geben?



  • Ist Simpl3x ein Troll oder hat er/sie/es einfach nur überhaupt komplett total keine Ahnung von Programmieren?

    ps:

    public static void inject(string dllPath, Process targetProcess) 
             { 
                 dllPath = System.IO.Path.GetFullPath(dllPath) + "\0";
                 byte[] dllPathBytes = Encoding.Unicode.GetBytes(dllPath);
    
                 IntPtr targetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, false, targetProcess.Id); 
                 IntPtr loadLibraryWAddress = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryW");
                 IntPtr dllNameBufferAddressInTargetProcess = VirtualAllocEx(targetProcessHandle, IntPtr.Zero, (uint)dllPathBytes.Length, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); 
                 UIntPtr bytesWritten; 
                 WriteProcessMemory(targetProcessHandle, dllNameBufferAddressInTargetProcess, dllPathBytes, (uint)dllPathBytes.Length, out bytesWritten); 
                 CreateRemoteThread(targetProcessHandle, IntPtr.Zero, 0, loadLibraryWAddress, dllNameBufferAddressInTargetProcess, 0, IntPtr.Zero); 
                 // Prozesshandle freigeben? Threadhandle freigeben? Error-Handling?
             }
    


  • C++, Java, PHP usw alles kein Problem aber von C# stimmt ich dir zu habe ich 0 Ahnung.

    Deshalb versuche ich das ganze ja zu verstehen.
    Danke schonmal, werde mich gleich nochmal dran versuchen.



  • So, habe endlich das Problem gelöst.

    Habe nun wie DarkShadow44 vorgeschlagen das ganze über embedded source geregelt.

    Lasse die Datei in ein Verzeichnis extracten, führe die Injection aus und lasse anschließend die Libriary wieder Löschen 🙂
    Vielen dank nochmal an DarkShadow44 für deine Hilfe!



  • Simpl3x schrieb:

    C++, Java, PHP usw alles kein Problem aber von C# stimmt ich dir zu habe ich 0 Ahnung.

    Wie um alles in der Welt kommst du dann auf "XML"? Was soll XML damit zu tun haben?



  • Beruhig dich doch bitte 🙂
    Ich hatte müde Augen und war nicht mehr ganz Fit im denken.

    Im nachhinein, nach weiteren nachforschungen habe ich es doch verstanden & selbständig gelöst.

    Also sei doch nicht so feindlich mir gegenüber.

    Wünsche dir noch ne angenehme Nacht! 😛



  • Ich bin ganz ruhig.

    Simpl3x schrieb:

    Beruhig dich doch bitte 🙂
    Ich hatte müde Augen und war nicht mehr ganz Fit im denken.

    Nein. Erklär mir bitte wie man hier auf XML kommen kann. Das ist einfach sowas von total daneben, da KANN man einfach nicht drauf kommen.

    Simpl3x schrieb:

    verstanden & selbständig gelöst

    Mhm, ja, sicher.

    Simpl3x schrieb:

    Also sei doch nicht so feindlich mir gegenüber.

    Das ist deine Interpretation.


Anmelden zum Antworten