Ihr verfehlt die Frage. Er will wissen, wie er einen unveränderlichen Pointerpfad auf die Struktur bekommt, wenn eine Pointervariable nunmal nicht global ist, sondern innerhalb einer Funktion auf dem Stack liegt.
Dazu sei Folgendes gesagt:
Ein Objekt macht nur Sinn, wenn darauf auch irgendwer zeigt, also wird es wohl kaum so sein, dass die Funktion verlassen wird, das Objekt bleibt auf dem Heap und der Pointer verlässt seinen Gültigkeitsbereich.
Sicherlich wird der Pointer in dem Fall irgendwie nach außen gereicht. Ein Hook der Funktion würde Klarheit schaffen.
Sollte der Pointer tatsächlich nur innerhalb der Funktion gültig sein, weil das Objekt beispielsweise temporär ist, dann wirst du ohnehin nicht um einen Hook herum kommen, damit du nicht auf den Pointer zugreifst, wenn das Objekt gar nicht existiert und es auch keinen Sinn macht.
Sollte es sich um eine Funktion mit längerer Ausführung handeln (Extrembeispiel: Main), dann ist der Pointer auch entsprechend lange gültig, sofern er nicht zwischendurch aktiv zerstört wird. In dem Fall wäre es auch wohl auch möglich, auf den Pointer einen sinnvollen Basepointer zu bekommen. Ich bin mir gerade nicht ganz sicher, aber gibt es nicht eine API / einen Eintrag im PEB/TEB, der auf den Anfang des Stacks zeigt? Die Position innerhalb des Stacks sollte ja konstant sein. Damit hättest du dann deinen Basepointer.
So oder so, ein Hook bleibt das Mittel der Wahl. Da wäre btw auch das Register fs eine Möglichkeit.