Frage zu DLL Code
-
Hey!
ich hätte eine Frage zu diesem Code:
http://wiki.hackerboard.de/index.php/DLL-Injection
Er schreibt ja erstmal die Injectstruct und dann die DLL in den Speicher.
Jetzt brauch ich jedoch die Injectstruct auch in meinem Programm und will auch noch mehr Parameter zum Übergeben dazuschreiben.
Könnte ich dann so in der Art die struct holen?:extern "C" void __declspec(dllexport) Funktion() { DWORD address = GetProcAddress(diedllhier, "Funktion") - sizeof(dercode: HINSTANCE hDll; fpFunktion funktion; INJECTSTRUCT * is = (INJECTSTRUCT*)addr; hDll = is->LoadLibrary(is->path); - sizeof(INJECTSTRUCT) ReadProcessMemory(&is, address, sizeof(INJECTSTRUCT)); }Logischerweise ist das nur pseudocode und die Paramter sind aufs wichtigste begrenzt. Aber so sollte ich doch das Injectstruct bekommen, ich muss nur irgendwe die größe von dem Code oben bekommen.
Ich ziehe das alles ab von der Adresse der Funktion weil der Thread so aussieht:DWORD WINAPI threadstart(LPVOID addr) { HINSTANCE hDll; fpFunktion funktion; INJECTSTRUCT * is = (INJECTSTRUCT*)addr; hDll = is->LoadLibrary(is->path); funktion = (fpFunktion)is->GetProcAddress(hDll, is->func); funktion(); return 0; }Und über HINSTANCE hDll steht ja das struct schon. Hoffe jemand kann mir helfen.
Und noch was: Ist so ein Code eigentlich besser als normaler DLL injection code, der Unterschied ist halt, dass bei diser Methode noch eine Funktion in der DLL aufgerufen wird und DllMain aber braucht man das?
-
Lass es einfach damit sein, der Code auf Hackerboard ist fürchterlich und meiner Meinung nach Sprachvergewaltigung.
Gibt deutlich elegantere Arten der DLL-Injection.
-
ich versteh das anliegen nicht mal. kannste das mal deutlich formulieren? wo brauchste diese injectstruct jetzt? in deinem programm? also in nem anderen prozess als in dem, in den du sie injectest? und "über HINSTANCE hDll steht das struct ja schon"? bitte was?!
-
also ich brauche diese injectstruct in der injected dll, weil ich da noch parameter von der exe zur dll übergeben will die ich noch in die struct schreibe. Mit "über HINSTANCE hDll steht das struct ja schon" meine ich, dass die struct im Speicher über HINSTANCE hDll bzw. HINSTANCE hDll - 4 steht (das ende der struct). Es wurde ja erst die struct in den Speicher geschrieben und gleich darauf threadstart. Hoffe du verstehst mich jetzt.
@Icematrix gibt es aber nur wenn man keine Funktion in der DLL will. Einer der beiden Mvps, weiß nicht mehr genau welcher, hat mal geschrieben, dass man in der DllMain viele Sachen nicht ausführen darf. Darum will ich lieber so eine Funktion mit in der DLl und diese aufrufen.
-
Hier ist meine Injection-Routine aus meiner Bibliothek.
Ist zwar C++, wenn du C willst musst du es umschreiben, nichts tragisches.customGetProcAddress ist nicht von mir geschrieben, sondern von Cypher auf MMOWNED bzw hier ist sein Blog: http://www.cypherjb.com/.
-
danke! die sieht echt gut aus

Theorethisch kann man in jedem Dll injection Code auch die exports callen, man muss halt nur noch ein GetProcAdress zur Funktion und ein CreateRemoteThread für die Funktion hinzufügen, sehe ich das richtig? Aber kann man auch mit SetWindowHookEx Injectionen exports callen?
-
Prinzipiell ja. DLL irgendwie in den Prozess bekommen und alle Module iterieren bis du deine DLL gefunden hast.
