|
|
@@ -12,6 +12,7 @@
|
|
|
#include "../hooks/graphics/graphics_hook_lifecycle.h"
|
|
|
#include "../hooks/inactivity/inactivity_override.h"
|
|
|
#include "../hooks/infinite_ammo/infinite_ammo.h"
|
|
|
+#include "../hooks/membership_probe/membership_probe.h"
|
|
|
#include "../hooks/network/runtime.h"
|
|
|
#include "../hooks/noclip/runtime.h"
|
|
|
#include "../hooks/package_trust/package_trust_bypass.h"
|
|
|
@@ -82,6 +83,15 @@ bool shutdown() noexcept {
|
|
|
ReleaseSRWLockExclusive(&runtime::g_lock);
|
|
|
return false;
|
|
|
}
|
|
|
+ // Attached last, so it detaches first. The probe reads through a detour, so one left in
|
|
|
+ // place is a branch into code a later unload unmaps.
|
|
|
+ if (!hooks::membership_probe::uninstall()) {
|
|
|
+ core::log::write(core::log::Channel::client,
|
|
|
+ core::log::Level::error,
|
|
|
+ "ev=shutdown stage=membership_probe result=fail");
|
|
|
+ ReleaseSRWLockExclusive(&runtime::g_lock);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
hooks::bitmap::uninstall();
|
|
|
hooks::bootflow::uninstall();
|
|
|
hooks::infinite_ammo::uninstall();
|