Funktion starten
-
Nach langen rumhacken komme ich jetzt an die Startpunkte der Funktionen.
Mainoffset: 0012BC50 <--Die Exe
0012BC5B :: gxgraphic <- Eine Funktion in der Exe mit NamenSo wie kann ich jetzt die Funktion anhand nur dieser Werte starten.
Kein Ahnung wie ich das jetzt mache.
-
o87 schrieb:
0012BC5B :: gxgraphic <- Eine Funktion in der Exe mit Namen
So wie kann ich jetzt die Funktion anhand nur dieser Werte starten.mit function pointer?
angenommen, die funktion liefert einen int zurück und braucht zwei parameter, dann z.b. so:int (*x)(int,int); x = (int(*)(int, int))0x12bc5b; int result = x(10, 20);
-
Scheisse hat nicht funktioniert

Mit LoadLibrary kann ich doch eine exe in den Speicher laden ?? Und bekomme seine Adresse. Oder?
Dann kann ich doch Adress von der Exe + Adresse der Funktion machen. Geht das nicht so, grob gesagt?
-
Nimm doch nach LoadLibrary noch GetProcAddress - dann bekommst du die direkte Adresse

-
flenders schrieb:
Nimm doch nach LoadLibrary noch GetProcAddress - dann bekommst du die direkte Adresse

eben, bei GetProcAdress bekomme ich immer eine NULL. Kann es sein das es gar keine Exe ist. Sondern sich nur so nennt ???
-
DLL-Funktionen rufe ich wiefolgt dynamisch auf (vielleicht hilft dir das ja weiter):
#include <windows.h> #include <string.h> #include <fstream.h> #include <conio.h> #include <condefs.h> #include <commctrl.h> typedef struct { DWORD *dwARG[15]; }STACK; typedef DWORD (*PFDLL) (STACK); #pragma argsused int main(int argc, char* argv[]) { HINSTANCE hDll = LoadLibrary("user32.dll"); if(hDll == NULL) return -1; PFDLL pfFunc = (PFDLL)GetProcAddress(hDll,"MessageBoxA"); if(pfFunc == NULL) return -1; STACK args; args.dwARG[0] = (DWORD*)0; char string1[255]; strcpy(string1, "Hello World"); args.dwARG[1] = (DWORD*)&string1; char string2[255]; strcpy(string2, "Test"); args.dwARG[2] = (DWORD*)&string2; args.dwARG[3] = (DWORD*)64; DWORD dwRet = (pfFunc)(args); return 0; }Gruss,
~code_pilot
-
e33 schrieb:
eben, bei GetProcAdress bekomme ich immer eine NULL.
Dann hast du evtl. den Funktionsnamen falsch angegeben - Dependency Walker sollte dir da weiterhelfen.
e33 schrieb:
Kann es sein das es gar keine Exe ist. Sondern sich nur so nennt ???
ROFL - Du versuchst dir einen Funktions-Pointer aus einer Datei zu holen, ohne überhaupt zu wissen, was es für ein Dateityp ist

-
flenders schrieb:
ROFL - Du versuchst dir einen Funktions-Pointer aus einer Datei zu holen, ohne überhaupt zu wissen, was es für ein Dateityp ist

Dann sollte das "Programm" dann aber auch nicht ausführbar sein, wenn es keine EXE ist.
