aboutsummaryrefslogtreecommitdiff
path: root/client/src/util/syscalls.h
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/util/syscalls.h')
-rw-r--r--client/src/util/syscalls.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/client/src/util/syscalls.h b/client/src/util/syscalls.h
new file mode 100644
index 0000000..0d73e4e
--- /dev/null
+++ b/client/src/util/syscalls.h
@@ -0,0 +1,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; \ No newline at end of file