Ich fuhr wieder gegen eine Wand und brauche deine Hilfe mit etwas Low-Level-Zeug. Es ist mir bereits gelungen, exportierte DLL-Funktionen (with this code btw.) zu haken, indem ich sie in meinen Zielprozess injizierte (z. B. kann ich einfach MessageBoxW
von user32.dll
umleiten). Leider ziele ich auf ein anderes Szenario ab: Ich muss eine Funktion umgehen, die in der ausführbaren Datei definiert ist, in die ich meinen Code einfüge. Die Anwendung ist Open-Source, also weiß ich alles über die Funktion, die ich zum Einhängen benötige, aber die Binärdatei ist mit einem Zertifikat signiert, so dass ich meine eigene Version nicht kompilieren kann. Ist es möglich, die Adresse der Funktionen zur Laufzeit abzurufen oder mit einer anderen Technik umzuleiten? Das Ziel ist eine "normale" 32-Bit-Windows-Binärdatei. nichts Besonderes dachte ich;)Wie finde ich eine Adresse, um eine EXE-Datei zu öffnen?
Mit freundlichen Grüßen Nefarius
EDIT: vielleicht aufgrund meines lahm Englisch mir nicht detailliert genug war, so dass hier ein kleines Codebeispiel:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
foo();
}
BOOL foo(char* someData)
{
return printf("%s", someData);
}
Now I möchte die Funktion foo()
umgehen, die in einer dynamischen Bibliothek nicht existiert. Das ist mein Problem. Ich weiß nicht wie und ich bin mir nicht sicher, ob das so funktioniert, wie ich denke.
EDIT: Jetzt weiß ich, dass es möglich ist, so dass die wichtige Frage geändert: wie? Wie bekomme ich die Informationen, die ich brauche? die Funktionen Adresse?
Stellen Sie keine [tags] in der Betreffzeile, vor allem, wenn Sie legen sie auch in den Bereich Tags. – abelenky
Ups, danke! – Nefarius