diff options
| author | auth <[email protected]> | 2020-07-17 00:27:29 +0200 |
|---|---|---|
| committer | auth <[email protected]> | 2020-07-17 00:27:29 +0200 |
| commit | eeafa0b030a017c02d11f95c3efe2f361afbdacf (patch) | |
| tree | edb938f74f3abbafc7937047a107174213c2aa57 | |
| parent | Client login handling on server. (diff) | |
| download | loader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.tar.xz loader-eeafa0b030a017c02d11f95c3efe2f361afbdacf.zip | |
Added injection placeholders.
| -rw-r--r-- | client/src/client/packet.h | 15 | ||||
| -rw-r--r-- | client/src/injection/mapper.h | 10 | ||||
| -rw-r--r-- | client/src/main.cpp | 5 | ||||
| -rw-r--r-- | server/src/forum/forum.cpp | 23 | ||||
| -rw-r--r-- | server/src/image/pe.h | 11 | ||||
| -rw-r--r-- | server/src/main.cpp | 3 | ||||
| -rw-r--r-- | server/src/server/packet.h | 15 | ||||
| -rw-r--r-- | server/src/server/server.h | 1 |
8 files changed, 71 insertions, 12 deletions
diff --git a/client/src/client/packet.h b/client/src/client/packet.h index aba5783..e197bf0 100644 --- a/client/src/client/packet.h +++ b/client/src/client/packet.h @@ -9,7 +9,20 @@ constexpr size_t message_len = 512; enum packet_type { write = 0, read }; -enum packet_id { message = 0, hwid, session, login_req, login_resp, process_list, ban }; +enum packet_id { + message = 0, + hwid, + session, + login_req, + login_resp, + process_list, + ban, + game_select, + image_req, + image_resp, + import_req, + import_resp +}; struct packet_t { std::string message; diff --git a/client/src/injection/mapper.h b/client/src/injection/mapper.h new file mode 100644 index 0000000..ef06a9b --- /dev/null +++ b/client/src/injection/mapper.h @@ -0,0 +1,10 @@ +#pragma once + + +namespace mmap { + struct header { + size_t image_size; + uint32_t entry; + uint32_t base; + }; +};
\ No newline at end of file diff --git a/client/src/main.cpp b/client/src/main.cpp index cef083f..cbe9f65 100644 --- a/client/src/main.cpp +++ b/client/src/main.cpp @@ -2,6 +2,7 @@ #include "util/io.h" #include "client/client.h" #include "assembler/assembler.h" +#include "injection/mapper.h" int main(int argc, char* argv[]) { io::init(); @@ -80,7 +81,9 @@ int main(int argc, char* argv[]) { } if (res == tcp::login_result::login_success) { - client.state = tcp::client_state::waiting; + client.state = tcp::client_state::logged_in; + + io::logger->info("logged in."); } diff --git a/server/src/forum/forum.cpp b/server/src/forum/forum.cpp index ed2ae58..a714cc6 100644 --- a/server/src/forum/forum.cpp +++ b/server/src/forum/forum.cpp @@ -41,16 +41,31 @@ int xenforo_forum::check_login(const std::string_view username, auto json = nlohmann::json::parse(response); - data.banned = json["user"]["is_banned"].get<bool>(); + if(!json.contains("user")) { + io::logger->error("json response for user {} doesn't contain user field.", + username); + return forum_response::api_fail; + } + + auto user = json["user"]; + + if (!user.contains("custom_fields")) { + io::logger->error( + "json response for user {} doesn't contain custom fields.", username); + return forum_response::api_fail; + } + + auto custom_fields = user["custom_fields"]; + + data.banned = user["is_banned"].get<bool>(); // data.active = check user groupm - auto custom_fields = json["user"]["custom_fields"]; if (custom_fields.contains("hwid")) { - data.hwid = json["user"]["custom_fields"]["hwid"].get<std::string>(); + data.hwid = custom_fields["hwid"].get<std::string>(); } else { io::logger->warn("hwid field doesn't exist for {}.", username); } - data.id = json["user"]["user_id"].get<int>(); + data.id = user["user_id"].get<int>(); return forum_response::api_success; } diff --git a/server/src/image/pe.h b/server/src/image/pe.h index c642672..2199411 100644 --- a/server/src/image/pe.h +++ b/server/src/image/pe.h @@ -28,6 +28,9 @@ class image { std::vector<std::pair<uint32_t, win::reloc_entry_t>> m_relocs; public: + image() = default; + ~image() = default; + image(const std::string_view name) : m_image{nullptr} { if (!io::read_file(name, m_buffer)) { io::logger->error("failed to load image {}.", name); @@ -117,12 +120,12 @@ class image { } } - const auto operator()() { return m_image; } + const auto operator->() { return m_image; } operator bool() const { return m_image != nullptr; } - auto imports() const { return m_imports; } - auto relocs() const { return m_relocs; } - auto sections() const { return m_sections; } + auto &imports() const { return m_imports; } + auto &relocs() const { return m_relocs; } + auto §ions() const { return m_sections; } std::string get_json_imports() { nlohmann::json json; diff --git a/server/src/main.cpp b/server/src/main.cpp index d70b4cf..81de12e 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -2,7 +2,6 @@ #include "util/io.h" #include "util/commands.h" #include "server/server.h" -#include "image/pe.h" constexpr std::string_view version{"0.1.0"}; @@ -138,6 +137,8 @@ int main(int argc, char* argv[]) { } json["result"] = tcp::client_response::login_success; + json["games"]["csgo"] = {{"version", 1.2}, {"id", 0}}; + json["games"]["csgo beta"] = {{"version", 1.2}, {"id", 1}}; client.write(tcp::packet_t(json.dump(), tcp::packet_type::write, session, tcp::packet_id::login_resp)); diff --git a/server/src/server/packet.h b/server/src/server/packet.h index 203382e..77bca7b 100644 --- a/server/src/server/packet.h +++ b/server/src/server/packet.h @@ -9,7 +9,20 @@ constexpr size_t message_len = 512; enum packet_type { write = 0, read }; -enum packet_id { message = 0, hwid, session, login_req, login_resp, process_list, ban }; +enum packet_id { + message = 0, + hwid, + session, + login_req, + login_resp, + process_list, + ban, + game_select, + image_req, + image_resp, + import_req, + import_resp +}; struct packet_t { std::string message; diff --git a/server/src/server/server.h b/server/src/server/server.h index 7fa5dc4..738558b 100644 --- a/server/src/server/server.h +++ b/server/src/server/server.h @@ -3,6 +3,7 @@ #include "../util/events.h" #include "../client/blacklist.h" #include "../forum/forum.h" +#include "../image/pe.h" #include "ssl.h" namespace tcp { |