Skip to content

Instantly share code, notes, and snippets.

@TTFH
Created November 4, 2023 17:41
Show Gist options
  • Save TTFH/fd44baac312c8e0ed3795224c6a4174d to your computer and use it in GitHub Desktop.
Save TTFH/fd44baac312c8e0ed3795224c6a4174d to your computer and use it in GitHub Desktop.
Analytics disabler for Teardown - pros.sdk.x64.dll
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <stdint.h>
#define EXPORT extern "C" __declspec(dllexport)
#ifdef _MSC_VER
#define PROXY(target_name, exp_name) __pragma(comment(linker, "/export:" #exp_name "=" #target_name "." #exp_name))
#else
#define PROXY(target_name, exp_name) asm(".section .drectve\n\t.ascii \" -export:" #exp_name "=" #target_name "." #exp_name "\" ")
#endif
#define HYDRA_OK 0x87;
EXPORT uint64_t* prosdk_user_get_kernel_session_id_visual_alias(uint64_t* param1) {
return NULL;
}
EXPORT uint64_t prosdk_user_get_connection_state(uint64_t* param1) {
return 0;
}
EXPORT uint64_t prosdk_user_connect_xbox(uint64_t* param1) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_user_connect_steam(uint64_t* param1) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_user_connect_psn_token(uint64_t* param1) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_user_connect_epic_online_services(uint64_t* param1) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_user_connect_developer(uint64_t* param1, uint64_t param2, int param3) {
return HYDRA_OK;
}
EXPORT void prosdk_update() {}
EXPORT void prosdk_term() {}
EXPORT uint64_t prosdk_telemetry_user_event(uint64_t* param1, uint64_t param2, uint32_t param3, uint64_t param4) {
return HYDRA_OK;
}
EXPORT bool prosdk_telemetry_deprecated_event(uint64_t param1, uint32_t param2, uint64_t param3) {
return false;
}
EXPORT uint64_t prosdk_mods_upload_mod_image(uint64_t* param1, uint64_t param2, uint64_t param3, uint64_t param4) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_unsubscribe_from_mod(uint64_t* param1, uint64_t param2, uint64_t param3, uint64_t param4, uint64_t* param5) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_subscribe_to_mod(uint64_t* param1, uint64_t param2, uint64_t param3, uint64_t param4, uint64_t* param5) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_rate_mod(uint64_t* param1, uint64_t* param2, uint64_t param3, uint64_t param4) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_get_connection_state(uint64_t* param1) {
return 0;
}
EXPORT void prosdk_mods_disconnect(uint64_t* param1) { }
EXPORT uint32_t prosdk_mods_connect(uint64_t* param1, uint64_t param2) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_add_mod_version(uint64_t* param1, uint64_t* param2, uint64_t param3, uint64_t param4) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_mods_add_mod(uint64_t* param1, uint64_t* param2, uint64_t* param3, uint64_t param4, uint64_t param5) {
return HYDRA_OK;
}
EXPORT void prosdk_is_executing_requests() {}
EXPORT uint64_t prosdk_init(uint64_t* param1, uint64_t param2, int param3) {
return 0;
}
EXPORT uint64_t prosdk_http_request_get_framed(uint64_t* param1, uint64_t param2, uint64_t param3, uint64_t param4, uint64_t param5) {
return 0;
}
EXPORT uint64_t prosdk_http_request_get(uint64_t* param1, uint64_t param2, uint64_t param3) {
return 0;
}
EXPORT uint64_t* prosdk_get_error_message() {
return NULL;
}
EXPORT uint32_t prosdk_disconnect_everything() {
return 123;
}
EXPORT uint64_t prosdk_container_transfer_upload_rawdata(uint64_t* param1, uint64_t param2, uint64_t* param3, uint64_t param4, uint64_t param5) {
return HYDRA_OK;
}
EXPORT uint64_t prosdk_authorization_user_create(uint64_t* param1) {
return 0;
}
EXPORT const char* prosdk_account_get_status(uint64_t* param1) {
return "Hello World ABC";
}
EXPORT uint64_t prosdk_account_get_qr_code(uint64_t* param1, uint64_t param2, uint64_t param3, uint64_t param4) {
return HYDRA_OK;
}
EXPORT void prosdk_account_connect(uint64_t* param1, uint64_t param2) { }
EXPORT void hydra5_diagnostics_release_crash_reporter_user_token(uint64_t* param1) {}
EXPORT uint64_t hydra5_diagnostics_get_crash_reporter_user_token(uint64_t param1) {
return 0;
}
// g++ -Wall -Wextra -Werror -Wpedantic -Wno-unused-parameter -s -shared -static pros.cpp -o pros.sdk.x64.dll
/*
PROXY(amateurs, prosdk_user_get_kernel_session_id_visual_alias);
PROXY(amateurs, prosdk_user_get_connection_state);
PROXY(amateurs, prosdk_user_connect_xbox);
PROXY(amateurs, prosdk_user_connect_steam);
PROXY(amateurs, prosdk_user_connect_psn_token);
PROXY(amateurs, prosdk_user_connect_epic_online_services);
PROXY(amateurs, prosdk_user_connect_developer);
PROXY(amateurs, prosdk_update);
PROXY(amateurs, prosdk_term);
PROXY(amateurs, prosdk_telemetry_user_event);
PROXY(amateurs, prosdk_telemetry_deprecated_event);
PROXY(amateurs, prosdk_mods_upload_mod_image);
PROXY(amateurs, prosdk_mods_unsubscribe_from_mod);
PROXY(amateurs, prosdk_mods_subscribe_to_mod);
PROXY(amateurs, prosdk_mods_rate_mod);
PROXY(amateurs, prosdk_mods_get_connection_state);
PROXY(amateurs, prosdk_mods_disconnect);
PROXY(amateurs, prosdk_mods_connect);
PROXY(amateurs, prosdk_mods_add_mod_version);
PROXY(amateurs, prosdk_mods_add_mod);
PROXY(amateurs, prosdk_is_executing_requests);
PROXY(amateurs, prosdk_init);
PROXY(amateurs, prosdk_http_request_get_framed);
PROXY(amateurs, prosdk_http_request_get);
PROXY(amateurs, prosdk_get_error_message);
PROXY(amateurs, prosdk_disconnect_everything);
PROXY(amateurs, prosdk_container_transfer_upload_rawdata);
PROXY(amateurs, prosdk_authorization_user_create);
PROXY(amateurs, prosdk_account_get_status);
PROXY(amateurs, prosdk_account_get_qr_code);
PROXY(amateurs, prosdk_account_connect);
PROXY(amateurs, hydra5_diagnostics_release_crash_reporter_user_token);
PROXY(amateurs, hydra5_diagnostics_get_crash_reporter_user_token);
*/
DWORD WINAPI MainThread(HMODULE hModule) {
AllocConsole();
FILE* stream;
freopen_s(&stream, "CONOUT$", "w", stdout);
printf("The Hydra is dead!\n");
FreeLibraryAndExitThread(hModule, 0);
return 0;
}
BOOL APIENTRY DllMain(HMODULE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
(void)lpvReserved;
if (fdwReason == DLL_PROCESS_ATTACH)
CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)MainThread, hinstDLL, 0, nullptr);
return TRUE;
}
@loginlom
Copy link

thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment