Exploiters are now bypassing my UserOwnsGamepass check and using a hookfunction to return it as true

dang ok. then just use server straight up then

Do not use UserOwnsGamePassAsync on the client, if you have a gamepass, do your best to do it all on the server. As @weakroblox35 said, ROBLOX should lock the entire service to the server only I think for security reasons.