diff options
| author | auth12 <[email protected]> | 2020-07-21 13:07:42 -0700 |
|---|---|---|
| committer | auth12 <[email protected]> | 2020-07-21 13:07:42 -0700 |
| commit | f09669dd5846d95b063712571ccb7519910a0d6e (patch) | |
| tree | 902f5ad201651f2d96ccf619e90b76cfa06a7b9b /server/src | |
| parent | Syscalls. (diff) | |
| download | loader-f09669dd5846d95b063712571ccb7519910a0d6e.tar.xz loader-f09669dd5846d95b063712571ccb7519910a0d6e.zip | |
Added game selection.
Started process wrapper.
Removed asmjit.
Diffstat (limited to 'server/src')
| -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 |