diff options
| author | auth <[email protected]> | 2020-07-05 12:00:04 +0200 |
|---|---|---|
| committer | auth <[email protected]> | 2020-07-05 12:00:04 +0200 |
| commit | 6a33a72c7b423afb143a67a3e88d27e4bcafd116 (patch) | |
| tree | 93766d360a2eb76ec35362bb2645910f7297a742 | |
| parent | Merge branch 'master' of github.com:auth12/loader (diff) | |
| download | loader-6a33a72c7b423afb143a67a3e88d27e4bcafd116.tar.xz loader-6a33a72c7b423afb143a67a3e88d27e4bcafd116.zip | |
More assembler implementations.
Small changes to client on server.
| -rw-r--r-- | client/src/assembler/assembler.cpp | 16 | ||||
| -rw-r--r-- | client/src/assembler/assembler.h | 4 | ||||
| -rw-r--r-- | client/src/main.cpp | 5 | ||||
| -rw-r--r-- | server/src/client/client.h | 15 | ||||
| -rw-r--r-- | server/src/main.cpp | 7 | ||||
| -rw-r--r-- | server/src/server/server.cpp | 11 |
6 files changed, 34 insertions, 24 deletions
diff --git a/client/src/assembler/assembler.cpp b/client/src/assembler/assembler.cpp index 43816fd..5311833 100644 --- a/client/src/assembler/assembler.cpp +++ b/client/src/assembler/assembler.cpp @@ -1,14 +1,24 @@ #include "../include.h" #include "assembler.h" +void assembler::assembler::start() {} + void assembler::assembler::push(const std::vector<uintptr_t>& args) { - for (auto it = args.rbegin(); it != args.rend(); ++it) { - m_assembler.push(*it); + if (!m_x64) { + for (auto it = args.rbegin(); it != args.rend(); ++it) { + m_assembler.push(*it); + } + return; } + + // 64bit impl } +void assembler::assembler::call(const uintptr_t addr) {} + void assembler::assembler::end() { - // epilogue here + if (m_x64) { + } void* func; m_runtime.add(&func, &m_code); diff --git a/client/src/assembler/assembler.h b/client/src/assembler/assembler.h index 390cd42..3dcdeaf 100644 --- a/client/src/assembler/assembler.h +++ b/client/src/assembler/assembler.h @@ -13,13 +13,15 @@ class assembler { JitRuntime m_runtime; x86::Assembler m_assembler; + bool m_x64; public: - assembler(const bool x64 = false) { + assembler(const bool x64 = false) : m_x64{x64} { Environment env(x64 ? Environment::kArchX64 : Environment::kArchX86); m_code.init(env); m_code.attach(&m_assembler); } + void start(); void push(const std::vector<uintptr_t> &args); void call(const uintptr_t addr); diff --git a/client/src/main.cpp b/client/src/main.cpp index 727e3a0..8e742de 100644 --- a/client/src/main.cpp +++ b/client/src/main.cpp @@ -28,9 +28,6 @@ int main(int argc, char* argv[]) { auto message = packet(); auto action = packet.act; - // move ? - int ret = -1; - if (action == tcp::packet_action::session) { client.session_id = packet.session_id; tcp::version_t v{0, 1, 0}; @@ -50,7 +47,7 @@ int main(int argc, char* argv[]) { } io::logger->info("{}:{}->{} {}", packet.id, packet.session_id, message, - packet.act); + action); }); while (client) { diff --git a/server/src/client/client.h b/server/src/client/client.h index 4dad02e..141ac67 100644 --- a/server/src/client/client.h +++ b/server/src/client/client.h @@ -15,7 +15,6 @@ class client { public: std::string hwid; - client() : m_socket{-1} {}; client(const int& socket, const std::string_view ip) : m_socket{std::move(socket)}, m_ip{ip}, m_ssl{nullptr} {} @@ -27,6 +26,8 @@ class client { close(m_socket); SSL_shutdown(m_ssl); SSL_free(m_ssl); + + m_socket = -1; } void reset() { std::time(&m_time); } @@ -46,12 +47,12 @@ class client { int stream(std::vector<char>& data, float* dur = nullptr); int read_stream(std::vector<char>& out); - int stream(std::string &str) { + int stream(std::string& str) { std::vector<char> vec(str.begin(), str.end()); return stream(vec); } - int read_stream(std::string &str) { + int read_stream(std::string& str) { std::vector<char> out; int ret = read_stream(out); str.assign(out.begin(), out.end()); @@ -60,8 +61,10 @@ class client { void gen_session(); - int &get_socket() { return m_socket; } - auto &get_ip() { return m_ip; } - auto &get_session() { return m_session_id; } + int& get_socket() { return m_socket; } + auto& get_ip() { return m_ip; } + auto& get_session() { return m_session_id; } + + operator bool() const { return m_ssl && m_socket > 0; } }; }; // namespace tcp
\ No newline at end of file diff --git a/server/src/main.cpp b/server/src/main.cpp index 77269a9..e7e0253 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -26,12 +26,6 @@ int main(int argc, char* argv[]) { }); client_server.disconnect_event.add([&](tcp::client& client) { - auto it = std::find_if(client_server().begin(), - client_server().end(), [&](tcp::client& c) { - return client.get_socket() == c.get_socket(); - }); - - client_server().erase(it); client.cleanup(); io::logger->info("{} disconnected", client.get_ip()); @@ -67,6 +61,7 @@ int main(int argc, char* argv[]) { }); client_server.timeout_event.add([&](tcp::client& client) { + client.cleanup(); io::logger->info("{} timed out.", client.get_ip()); }); diff --git a/server/src/server/server.cpp b/server/src/server/server.cpp index 5996eb3..b7f7606 100644 --- a/server/src/server/server.cpp +++ b/server/src/server/server.cpp @@ -57,7 +57,13 @@ tcp::select_status tcp::server::peek() { int maxfd = m_socket; - for (auto& c : client_stack) { + for (int i = 0; i < client_stack.size(); i++) { + auto c = client_stack[i]; + if(!c) { + client_stack.erase(client_stack.begin() + i); + continue; + } + const int s = c.get_socket(); FD_SET(s, &m_server_set); @@ -144,9 +150,6 @@ void tcp::server::check_timeout() { if (it != client_stack.end()) { timeout_event.call(*it); - - it->cleanup(); - client_stack.erase(it); } } |