Hey Leute,
ich versuche schon längere Zeit (immer mal wieder) eine Funktion (z.B. SetCursorPos/PostMessage) aus einer DLL (in diesem Fall user32.dll) zu importieren (während der Laufzeit) und diese dann mit eigenen Assemblerbefehlen zu verändern.
Schema:
DllAufruf
Funktion aus DLL importieren
Assembler Code ausführen (z.B. 10 Bytes lang)
Funktionsstartpunkt + 10 Bytes ausführen (die ersten 10 Bytes der Originalfunktion ignorieren)
Dazu habe ich mir http://www.hackerboard.de/code-kitchen/40292-c-asm-gewisse-stelle-anspringen.html angeschaut, aber es funktioniert bei mir trotzdem nicht.
Soweit bin ich bis jetzt:
Jedoch kommt des öfteren (je nach Codevarianten) eine Access Violation oder " Run-Time Check Failure #0 - The value of ESP was not properly saved ....." wenn ich die Funktion aufrufe!
Wäre nett, wenn jemand helfen könnte
Mfg Raisem
ich versuche schon längere Zeit (immer mal wieder) eine Funktion (z.B. SetCursorPos/PostMessage) aus einer DLL (in diesem Fall user32.dll) zu importieren (während der Laufzeit) und diese dann mit eigenen Assemblerbefehlen zu verändern.
Schema:
DllAufruf
Funktion aus DLL importieren
Assembler Code ausführen (z.B. 10 Bytes lang)
Funktionsstartpunkt + 10 Bytes ausführen (die ersten 10 Bytes der Originalfunktion ignorieren)
Dazu habe ich mir http://www.hackerboard.de/code-kitchen/40292-c-asm-gewisse-stelle-anspringen.html angeschaut, aber es funktioniert bei mir trotzdem nicht.
Soweit bin ich bis jetzt:
Code:
typedef BOOL (WINAPI *ggSCP) (int x,int y) ;
void SetCurs(int x, int y)
{
hInst = LoadLibrary(TEXT("C:\\Windows\\System32\\user32.dll"));
ggSCP DLLFuncSCP = ggSCP(GetProcAddress(hInst, "SetCursorPos"));
FreeLibrary(hInst);
hInst = NULL;
__asm
{
mov edi, edi
push ebp
mov ebp, esp
add DLLFuncSCP, 5
jmp [DLLFuncSCP]
}
}
Jedoch kommt des öfteren (je nach Codevarianten) eine Access Violation oder " Run-Time Check Failure #0 - The value of ESP was not properly saved ....." wenn ich die Funktion aufrufe!
Wäre nett, wenn jemand helfen könnte
Mfg Raisem