mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-16 12:33:48 -07:00
pluginapi: Trampoline hooks %rip patching improvements (#4256)
--------- Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
This commit is contained in:
@@ -22,21 +22,31 @@ class CFunctionHook {
|
||||
void* m_pOriginal = nullptr;
|
||||
|
||||
private:
|
||||
void* m_pSource = nullptr;
|
||||
void* m_pFunctionAddr = nullptr;
|
||||
void* m_pTrampolineAddr = nullptr;
|
||||
void* m_pDestination = nullptr;
|
||||
size_t m_iHookLen = 0;
|
||||
size_t m_iTrampoLen = 0;
|
||||
HANDLE m_pOwner = nullptr;
|
||||
bool m_bActive = false;
|
||||
void* m_pSource = nullptr;
|
||||
void* m_pFunctionAddr = nullptr;
|
||||
void* m_pTrampolineAddr = nullptr;
|
||||
void* m_pDestination = nullptr;
|
||||
size_t m_iHookLen = 0;
|
||||
size_t m_iTrampoLen = 0;
|
||||
HANDLE m_pOwner = nullptr;
|
||||
bool m_bActive = false;
|
||||
|
||||
std::vector<std::pair<size_t, std::string>> m_vTrampolineRIPUses;
|
||||
void* m_pOriginalBytes = nullptr;
|
||||
|
||||
void* m_pOriginalBytes = nullptr;
|
||||
struct SInstructionProbe {
|
||||
size_t len = 0;
|
||||
std::string assembly = "";
|
||||
std::vector<size_t> insSizes;
|
||||
};
|
||||
|
||||
size_t probeMinimumJumpSize(void* start, size_t min);
|
||||
size_t getInstructionLenAt(void* start);
|
||||
struct SAssembly {
|
||||
std::vector<char> bytes;
|
||||
};
|
||||
|
||||
SInstructionProbe probeMinimumJumpSize(void* start, size_t min);
|
||||
SInstructionProbe getInstructionLenAt(void* start);
|
||||
|
||||
SAssembly fixInstructionProbeRIPCalls(const SInstructionProbe& probe);
|
||||
|
||||
friend class CHookSystem;
|
||||
};
|
||||
|
Reference in New Issue
Block a user