diff --git a/src/main.c b/src/main.c index f53b8f2..df5f3a7 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,10 @@ + #include +#include + +#include "include/main.h" +#include "include/globals.h" +#include "include/sdk.h" /* * We need: @@ -7,4 +13,30 @@ */ __attribute__((constructor)) void load(void) { printf("hl-cheat loaded!\n"); + + if (!globals_init()) { + printf("hl-cheats: load: error loading globals, aborting\n"); + self_unload(); + return; + } + + printf("gp_engine: %p\n" + "gp_client: %p\n", + gp_engine, gp_client); + + gp_engine->pfnClientCmd("echo \"Hello from the game's console!\""); +} + +void self_unload(void) { + /* + * RTLD_LAZY: If the symbol is never referenced, then it is never resolved. + * RTLD_NOLOAD: Don't load the shared object. + */ + void* self = dlopen("libhlcheat.so", RTLD_LAZY | RTLD_NOLOAD); + + /* Close the call we just made to dlopen() */ + dlclose(self); + + /* Close the call our injector made */ + dlclose(self); }