blob: 0d73e4e7fd41c6d4b84cecd05e3d47c48d7003de (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#pragma once
class syscalls {
std::unordered_map<std::string, std::pair<uint16_t, uint16_t>> m_indexes;
std::vector<char> m_stub;
void *m_call_table;
public:
syscalls();
~syscalls();
void init();
bool valid(const uintptr_t func, const size_t &size);
uint16_t get_index(const uintptr_t va, uint16_t &offset);
size_t func_size(const uint8_t *func);
template<class T>
T get(const std::string_view func) {
return reinterpret_cast<T>(uintptr_t(m_call_table) + (m_indexes[func.data()].first * m_stub.size()));
};
};
extern syscalls g_syscalls;
|