Closed JJTech0130 closed 8 months ago
Thanks for the explanation and link to the gist.
I'm not very familiar with the details of how PAC works but that completely explains why directly calling it didn't work. Using the ptrauth
functions to sign the pointer is definitely much better than using MSHookFunction
as a workaround.
Sorry for the delay. Commit 7fe5d03 replaces the nac_sign hook with proper PAC functions.
In https://github.com/thatmarcel/beepserv-rewrite/blob/main/IdentityServices/bp_ids_hooking_utils.x you wrote:
The reason this does not work on arm64e devices is because the pointer you found is not signed with PAC. Instead of relying on
MSHookFunction
, you can use the PAC intrinsics directly to sign the pointer:This is described in more detail in summertriangle's excellent gist on the subject