mirror of
https://gitgud.io/yuv420p10le/plexmediaserver_crack
synced 2025-12-30 22:20:28 +00:00
Added FeatureManager::UserFeatureSet spoofing.
- Fixes intro/credit markers not being sent to clients in recent updates.
This commit is contained in:
@@ -250,6 +250,7 @@ std::bitset<416>* g_feature_flags;
|
||||
|
||||
SafetyHookInline _is_feature_available{};
|
||||
SafetyHookInline _map_find{};
|
||||
SafetyHookInline _is_user_feature_set{};
|
||||
SafetyHookInline _feature_manager_init{};
|
||||
SafetyHookInline _bitset_init{};
|
||||
auto _feature_manager = reinterpret_cast<FeatureManager*>(0);
|
||||
@@ -413,6 +414,15 @@ void hook_bitset_init(uintptr_t rcx, uintptr_t rdx)
|
||||
#endif
|
||||
}
|
||||
|
||||
uint64_t hook_is_user_feature_set([[maybe_unused]] int expected, [[maybe_unused]] int feature)
|
||||
{
|
||||
#if _DEBUG
|
||||
std::println("[INFO] [plexmediaserver_crack] Spoofed feature {} to {}.", feature, expected);
|
||||
#endif
|
||||
|
||||
return expected;
|
||||
}
|
||||
|
||||
FeatureManager* hook_feature_manager_init(FeatureManager* rcx)
|
||||
{
|
||||
return _feature_manager = _feature_manager_init.call<FeatureManager*>(rcx);
|
||||
@@ -439,7 +449,13 @@ void hook()
|
||||
const auto start = std::get<0>(info.value());
|
||||
const auto end = std::get<1>(info.value());
|
||||
const auto bitset = sig_scan(start, end, "8B 84 24 ? ? 00 00 87 05 ? ? ? ? 8B");
|
||||
const auto bitset_init = sig_scan(start, end, "48 89 5C 24 18 48 89 74 24 20 57 41 54 41 55 41 56 41 57 48 81 EC 90 02 00 00 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 88");
|
||||
const auto bitset_init = sig_scan(start, end, "48 89 5C 24 18 48 89 74 24 20 57 41 54 41 55 41 56 41 57 48 81 EC 90 02 00 00 48 8B 05 ? ? ? ? 48 33 C4 48 89 84 24 88");
|
||||
const auto is_user_feature_set = sig_scan(start, end, "48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 48 89 7C 24 20 41 56 48 83 EC 30 48 63");
|
||||
|
||||
if(is_user_feature_set)
|
||||
{
|
||||
_is_user_feature_set = safetyhook::create_inline(reinterpret_cast<void*>(is_user_feature_set.value()), reinterpret_cast<void*>(hook_is_user_feature_set));
|
||||
}
|
||||
|
||||
// Features are now enabled in std::atomic<std::bitset> as of 2024/08/13 PMS BETA
|
||||
if(bitset && bitset_init)
|
||||
|
||||
@@ -42,5 +42,6 @@ std::optional<uintptr_t> sig_scan(const uintptr_t start, const uintptr_t end, st
|
||||
uint64_t hook_is_feature_available(uintptr_t rcx, str_holder* guid);
|
||||
uint64_t* hook_map_find(uintptr_t* rcx, uintptr_t rdx, str_holder* str);
|
||||
void hook_bitset_init(uintptr_t rcx, uintptr_t rdx);
|
||||
uint64_t hook_is_user_feature_set(int expected, int feature);
|
||||
FeatureManager* hook_feature_manager_init(FeatureManager* rcx);
|
||||
void hook();
|
||||
|
||||
Reference in New Issue
Block a user