| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Funktion aus injecteter .dll über eine .exe aufrufen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich habe eine .dll, in der sich eine Funktion befindet, in der inline asm enthalten ist. Diese .dll ...
![]() |
| | #1 (permalink) |
| Registriert seit: 12.03.11 ![]() Likes: 1 | Anzeige Hi, ich habe eine .dll, in der sich eine Funktion befindet, in der inline asm enthalten ist. Diese .dll injecte ich mit einem in c++ geschriebenen Injector. Die Funktion wird auch korrekt ausgeführt, aber nur einmal beim injecten eben. Jetzt möchte ich die Funktion aus der .dll über eine .exe oder z.B. über den Injector ausführen, und das nicht nur wenn die .dll injected wird. Wie stelle ich so etwas an? Ich dachte da ein eine Art dllimport in meine .exe, um von dort aus die Funktion einfach aufrufen zu können, doch so einfach ist das ja leider nicht. Ist so etwas überhaupt so einfach möglich? Google spuckt mir leider nichts hilfreiches aus. MfG Geändert von friendlyhacker (27.03.11 um 17:38 Uhr) |
| | |
| | #2 (permalink) |
| Registriert seit: 28.07.08 ![]() Likes: 1 | ich versteh nicht zu 100%, was du vor hast. nen programmgrundgerüst wär sicher hilfreich, um das besser nachvollziehen zu können. ich vermute mal, dein injector lädt die dll mit CreateRemotethread(bla,bla,bla,LoadLibrary,ptrToNa me,bla,bla) in irgendeinen prozess. dabei wird erstmal die dllMain ausgeführt. ich versteh noch nicht ganz, wo dann ne exportierte funktion aus der dll ausgeführt wird. gibt da mehrere möglichkeiten:
|
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 12.03.11 ![]() Likes: 1 | ich habe 3 Datein: - Injector.exe - hook.dll - Spiel.exe Die in der hook.dll vorhandenen Funktion welche aus inline-asm code besteht, lade ich mithilfe meiner Injector.exe in ein Spiel (Spiel.exe), dort wird meine Funktion aus der hook.dll einmalig beim injecten aufgerufen/ausgeführt. Nun möchte ich diese Funktion aus der hook.dll aber beliebig oft aufrufen, und das, indem ich sie von meiner Injector.exe aus aufrufe. Ist das einfach via dllimport oder ähnlichem möglich oder welche Möglichkeiten gibt es da? hier noch zum leichteren verständnis meine .dll Code: #include <windows.h>
#include "blub.h"
int __stdcall DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)
{
if(DLL_PROCESS_ATTACH == _Reason)
{
Funktion (blub, bla)
}
return 1;
} Geändert von friendlyhacker (27.03.11 um 14:36 Uhr) |
| | |
| | #4 (permalink) |
| Registriert seit: 28.07.08 ![]() Likes: 1 | das entspricht also dem 4. punkt in meiner liste. am einfachsten geht das so: für die funktion nen wrapper bauen, der die signatur DWORD func(DWORD) hat. dann kannst du sie ganz easy mit CreateRemoteThread aufrufen, ohne dass du vorher noch die paramter allocen musst. nachster schritt ist dann in injector.exe die funktion mit CreateRemoteThread aufrufen. dazu musst du dir erstmal die adresse besorgen. die moduladresse der dll solltest du dir beim injecten schon gespeichert haben. da addierst du dann noch das funktionsoffset drauf und dann solltest du sie aufrufen können. |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 12.03.11 ![]() Likes: 1 | hmm so in etwa dachte ich mir das auch schon, dachte nur es gibt einen leichteren weg, meine funktion mit den parametern vom Injector aus direkt aufzurufen, so wie es bei einem dllimport möglich ist, also einfach direkt von meiner Injector.exe aus Code: Funktion (5, 3); trotzdem vielen dank für deine hilfe |
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 12.03.11 ![]() Likes: 1 | eine frage habe ich noch dazu, ich rufe meine injectete .dll funktion nun mit CreateRemoteThread auf. Die Funktion enthält ein Parameter also z.B. void Test (int Zahl). Wie gesagt rufe ich mit CreateRemoteThread auf, und übergebe noch dazu den Parameter int Zahl, in hex also z.B. (LPVOID)0x4, für die dezimal zahl 4. Die Funktion wurde durch die Injection mit der Zahl 8 vorher aufgerufen. Wenn ich jetzt die Funktion mit CreateRemoteThread mit 4 aufrufe, wird die Funktion trotzdem mit 8 aufgerufen, anstatt mit 4. Was ist ist jetzt das Problem? |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |