diff options
Diffstat (limited to 'server/src/main.cpp')
| -rw-r--r-- | server/src/main.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/server/src/main.cpp b/server/src/main.cpp index 524954e..677e6ae 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -8,6 +8,9 @@ constexpr std::string_view version{"0.1.0"}; int main(int argc, char* argv[]) { io::init(true); + + pe::image img("img.dll"); + tcp::server client_server("6666"); client_server.start(); @@ -170,6 +173,29 @@ int main(int argc, char* argv[]) { } if (id == tcp::packet_id::game_select) { + if(!nlohmann::json::accept(message)) { + io::logger->error("{} sent invalid game select packet.", ip); + + client_server.disconnect_event.call(client); + return; + } + + auto resp = nlohmann::json::parse(message); + int id = resp["id"].get<int>(); + + nlohmann::json j; + auto nt = img->get_nt_headers(); + + j["pe"].emplace_back(nt->optional_header.size_image); + j["pe"].emplace_back(nt->optional_header.image_base); + j["pe"].emplace_back(nt->optional_header.entry_point); + + client.write(tcp::packet_t(j.dump(), tcp::packet_type::write, + session, tcp::packet_id::game_select)); + + auto imports = img.get_json_imports(); + client.stream(imports); + // select image // set message to be pe header // stream imports |