diff --git a/Injector/src/main.cpp b/Injector/src/main.cpp index aea8a05..fb9a768 100644 --- a/Injector/src/main.cpp +++ b/Injector/src/main.cpp @@ -3,14 +3,39 @@ #include "injector.hpp" #include "util/downloader.hpp" -int main() +int main(int argc, const char** args) { using namespace injector; - const char* dll_name = "./YimMenu.dll"; - g_log->verbose("MAIN", "Loading settings"); + const char* target_app; + const char* dll_name; - g_settings.load(); + if (argc == 1) + { + g_log->verbose("MAIN", "Loading settings"); + g_settings.load(); + + target_app = g_settings.target_application.c_str(); + dll_name = "./latest.dll"; + } + else if (argc == 3) + { + target_app = args[1]; + dll_name = args[2]; + + if (Injector::inject(target_app, dll_name)) + g_log->verbose("MAIN", "Successfully injected..."); + else + g_log->error("MAIN", "Failed to inject into target process."); + + return 0; + } + else + { + g_log->error("MAIN", "Invalid argument count."); + + return 1; + } if (g_settings.dll_provider.empty()) { @@ -31,7 +56,10 @@ int main() else g_log->info("MAIN", "No DLL present, downloading from server."); - std::string url = g_settings.dll_provider + "/YimMenu.dll"; + std::string url = g_settings.dll_provider + "/" + json["file"].get(); + + g_log->verbose("MAIN", "Downloading file from %s", url.c_str()); + download::file(url.c_str(), dll_name); g_log->info("MAIN", "Downloaded DLL, new version %s", json["version"].get().c_str()); @@ -40,12 +68,16 @@ int main() g_settings.attempt_save(); } - if (Injector::inject(g_settings.target_application.c_str(), dll_name)) + if (Injector::inject(target_app, dll_name)) + { g_log->verbose("MAIN", "Successfully injected..."); - else - g_log->error("MAIN", "Failed to inject into target process."); + + return 0; + } + + g_log->error("MAIN", "Failed to inject into target process."); system("timeout 10"); - return 0; + return 1; } \ No newline at end of file