ich zur Zeit Funktionszeiger nenne wie soC++ Aufruf Funktionszeiger mit jeder Menge Variablen
int(*function)(int a, int b, bool c) = (int(*)(int, int, bool))0x12341234;
Aber ich habe ein Problem, wenn ich ohne Angabe params einen Funktionszeiger aufgerufen werden soll?
dh, wenn ich weiß, dass die Funktion bei 0x12341234 befindet, und ich weiß, dass die Parameter (int, int, bool) ist es eine Möglichkeit, so könnte ich es so etwas nennen:
void callFunctionUsingMemAddress(int funcaddr, ...)
{
executefunction(funcaddr, ...);
}
dann würde ich nennen Funktion bei 0x12341234 wie dieser sich
callFunctionUsingMemAddress(0x12341234, 54, 77, false);
Von der Forschung, die ich getan habe, ich glaube, ich muss mit variadische Argumente arbeiten, obwohl ich nicht in der Lage gewesen, eine gute Möglichkeit, um herauszufinden, diese mit variadische Argumente zu tun.
Warum müssen Sie einem Funktionszeiger eine unformatierte Adresse zuweisen? –
@NickyC Ich habe ein Plugin, das an einen Programmprozess "anfügt", dann rufe ich Funktionen aus dem Programm, an das das Plugin angehängt ist, mit den Funktionen rohe Adressen. – thehaxdev