mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-24 19:26:18 +02:00
92 lines
5.5 KiB
C++
92 lines
5.5 KiB
C++
#pragma once
|
|
#include "engine.h"
|
|
#include <array>
|
|
#include <cstdint>
|
|
|
|
// Fixed-stop entitlement provider (CheckEntitlements replacement).
|
|
namespace dingosdk::game::build::v20260929::fixed_stop_entitlement {
|
|
// CheckEntitlements entry.
|
|
inline constexpr std::uintptr_t check_entitlements = engine::check_entitlements;
|
|
inline constexpr std::array<unsigned char, 40> check_entitlements_prefix{
|
|
0x40,0x55,0x57,0x41,0x56,0x41,0x57,0x48,0x8d,0x6c,0x24,0xd8,0x48,0x81,0xec,0x28,
|
|
0x01,0x00,0x00,0x48,0x8b,0x05,0x66,0x00,0xa5,0x06,0x48,0x33,0xc4,0x48,0x89,0x45,
|
|
0x08,0x4c,0x8b,0xf1,0x4c,0x89,0x44,0x24};
|
|
// Group enumeration inside CheckEntitlements: the exact entry sequence that
|
|
// reserves the eID list, reads group +0x88/+0x90, skips null members, obtains
|
|
// the native eID key, and calls the member lookup.
|
|
inline constexpr std::uintptr_t group_enumeration = 0x77458f;
|
|
inline constexpr std::array<unsigned char, 76> group_enumeration_prefix{
|
|
0x48,0x8d,0x4c,0x24,0x60,0x48,0x8b,0x93,0x90,0x00,0x00,0x00,0x48,0x2b,0x93,0x88,
|
|
0x00,0x00,0x00,0x48,0xc1,0xfa,0x04,0xe8,0xd5,0x62,0xae,0xff,0x4c,0x8b,0xbb,0x90,
|
|
0x00,0x00,0x00,0x48,0x8b,0xb3,0x88,0x00,0x00,0x00,0x49,0x3b,0xf7,0x74,0x7c,0x66,
|
|
0x90,0x48,0x8b,0x5e,0x08,0x48,0x85,0xdb,0x74,0x68,0x33,0xc9,0xe8,0x70,0x50,0xfd,
|
|
0xff,0x48,0x8b,0xd0,0x48,0x8b,0xcb,0xe8,0xf5,0x05,0xf5,0x00};
|
|
// Result vector constructor.
|
|
inline constexpr std::uintptr_t result_vector_init = 0x58b1cb0;
|
|
inline constexpr std::array<unsigned char, 37> result_vector_init_prefix{
|
|
0x40,0x53,0x48,0x83,0xec,0x20,0x48,0x8b,0xd9,0xe8,0x42,0x9e,0x51,0xfe,0x48,0x89,
|
|
0x03,0x48,0x8b,0xc3,0xc7,0x43,0x08,0x00,0x00,0x00,0x00,0xc6,0x43,0x0c,0x00,0x48,
|
|
0x83,0xc4,0x20,0x5b,0xc3};
|
|
// Native array allocation.
|
|
inline constexpr std::uintptr_t array_allocate = engine::array_allocate;
|
|
inline constexpr std::array<unsigned char, 61> array_allocate_prefix{
|
|
0x48,0x89,0x5c,0x24,0x08,0x57,0x48,0x83,0xec,0x20,0x49,0x8b,0xc1,0x49,0x8b,0xd8,
|
|
0x48,0x8b,0xfa,0x4d,0x85,0xc9,0x75,0x07,0xb2,0x01,0xe8,0xe1,0x26,0x7d,0xfd,0x44,
|
|
0x0f,0xb6,0x4c,0x24,0x48,0x4c,0x8b,0xc3,0x48,0x8b,0xd7,0x48,0x8b,0xc8,0x48,0x8b,
|
|
0x5c,0x24,0x30,0x48,0x83,0xc4,0x20,0x5f,0xe9,0xc3,0x7a,0x7b,0xfd};
|
|
// Result element constructor.
|
|
inline constexpr std::uintptr_t result_element_init = 0x58b1c70;
|
|
inline constexpr std::array<unsigned char, 50> result_element_init_prefix{
|
|
0x40,0x53,0x48,0x83,0xec,0x20,0x48,0x8b,0xd9,0xe8,0x82,0x9e,0x51,0xfe,0x48,0x89,
|
|
0x03,0x48,0x8d,0x05,0x7c,0xca,0xa4,0x01,0x48,0x89,0x43,0x08,0xe8,0x6f,0x9e,0x51,
|
|
0xfe,0x48,0x89,0x43,0x10,0x48,0x8b,0xc3,0xc6,0x43,0x18,0x00,0x48,0x83,0xc4,0x20,
|
|
0x5b,0xc3};
|
|
// Expected leading bytes of engine::string_assign.
|
|
inline constexpr std::array<unsigned char, 40> assign_string_prefix{
|
|
0x48,0x89,0x5c,0x24,0x10,0x48,0x89,0x6c,0x24,0x18,0x56,0x57,0x41,0x56,0x48,0x83,
|
|
0xec,0x20,0x48,0x8b,0x19,0x48,0x8d,0x2d,0xc8,0x70,0xd7,0x05,0x41,0x8b,0xf0,0x4c,
|
|
0x8b,0xf2,0x48,0x8b,0xf9,0x48,0x85,0xdb};
|
|
// Error constructor.
|
|
inline constexpr std::uintptr_t construct_error = engine::construct_error;
|
|
inline constexpr std::array<unsigned char, 40> construct_error_prefix{
|
|
0x48,0x89,0x5c,0x24,0x08,0x48,0x89,0x74,0x24,0x10,0x57,0x48,0x83,0xec,0x20,0x48,
|
|
0x8b,0xf1,0x49,0x8b,0xd8,0x49,0x8b,0xc8,0x8b,0xfa,0xe8,0xcd,0xfb,0xc2,0x04,0x44,
|
|
0x8b,0xc0,0x48,0x8b,0xd3,0x48,0x8b,0xce};
|
|
// Promise completion.
|
|
inline constexpr std::uintptr_t complete_promise = engine::complete_promise;
|
|
inline constexpr std::array<unsigned char, 40> complete_promise_prefix{
|
|
0x48,0x83,0xec,0x48,0x4c,0x8b,0xd2,0x48,0x8b,0x11,0x48,0x8b,0x02,0x4c,0x8b,0x48,
|
|
0x40,0x4d,0x85,0xc9,0x74,0x14,0x80,0x78,0x68,0x00,0x75,0x0e,0x49,0x8b,0xd0,0x49,
|
|
0x8b,0xca,0x41,0xff,0xd1,0x48,0x83,0xc4};
|
|
// Result vector destructor.
|
|
inline constexpr std::uintptr_t destroy_vector = 0x76c370;
|
|
inline constexpr std::array<unsigned char, 40> destroy_vector_prefix{
|
|
0x48,0x89,0x74,0x24,0x18,0x41,0x56,0x48,0x83,0xec,0x20,0x48,0x8b,0x31,0x4c,0x8b,
|
|
0xf1,0xe8,0x7a,0xf7,0x65,0x03,0x48,0x3b,0xf0,0x74,0x79,0x49,0x8b,0x06,0x48,0x89,
|
|
0x5c,0x24,0x30,0x48,0x8b,0xde,0x48,0x89};
|
|
// Expected leading bytes of engine::native_text_release.
|
|
inline constexpr std::array<unsigned char, 40> destroy_string_prefix{
|
|
0x48,0x8b,0x09,0x48,0x8d,0x05,0xaa,0x86,0xd7,0x05,0x48,0x3b,0xc8,0x0f,0x85,0xbd,
|
|
0x9b,0xff,0xff,0xc3,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
|
|
0x48,0x89,0x5c,0x24,0x08,0x57,0x48,0x83};
|
|
// Future assignment.
|
|
inline constexpr std::uintptr_t assign_future = engine::assign_future;
|
|
inline constexpr std::array<unsigned char, 34> assign_future_prefix{
|
|
0x48,0x85,0xd2,0x74,0x16,0xb8,0x00,0x20,0x00,0x00,0x66,0x85,0x42,0x14,0x48,0x8b,
|
|
0xc1,0x75,0x0b,0xf0,0xff,0x42,0x10,0x48,0x89,0x11,0xc3,0x48,0x8b,0xc1,0x48,0x89,
|
|
0x11,0xc3};
|
|
// Native eID key getter.
|
|
inline constexpr std::uintptr_t eid_key = 0x749640;
|
|
inline constexpr std::array<unsigned char, 21> eid_key_prefix{
|
|
0x48,0x8d,0x05,0x65,0xfd,0x98,0x05,0x48,0x89,0x44,0x24,0x10,0x48,0x63,0xc1,0x48,
|
|
0x8b,0x44,0xc4,0x10,0xc3};
|
|
// Group member eID lookup.
|
|
inline constexpr std::uintptr_t find_member_eid = 0x16c4bd0;
|
|
inline constexpr std::array<unsigned char, 40> find_member_eid_prefix{
|
|
0x40,0x53,0x55,0x56,0x57,0x48,0x83,0xec,0x48,0x48,0x8d,0x71,0x60,0xc6,0x44,0x24,
|
|
0x20,0x00,0x48,0x8b,0xca,0xc6,0x44,0x24,0x2f,0x0f,0x48,0x8b,0xea,0x48,0xc7,0x44,
|
|
0x24,0x30,0x00,0x00,0x00,0x00,0xe8,0x21};
|
|
// Pointer to the client game manager.
|
|
inline constexpr std::uintptr_t client_game_manager = engine::client_game_manager;
|
|
}
|