Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdio.h>
- #include "MinHook.h"
- #include <ws2tcpip.h>
- #include <tlhelp32.h>
- #include <shellapi.h>
- #pragma comment(lib, "libMinHook-x64.lib")
- //#define DEBUG_OUTPUT
- char textBuffer[1024];
- void Log(char* text)
- {
- #ifdef DEBUG_OUTPUT
- FILE * fp;
- fp = fopen ("D:\\log_soda.txt","a");
- fprintf(fp, text);
- fclose(fp);
- #endif
- }
- typedef int (WSAAPI * GETADDRINFO)(PCSTR, PCSTR, const ADDRINFOA*, PADDRINFOA*);
- typedef INT64 (*CURL_SETOPT)(INT64, INT64, ...);
- GETADDRINFO org_getaddrinfo = NULL;
- CURL_SETOPT org_curlsetopt = NULL;
- INT WSAAPI mygetaddrinfo(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, PADDRINFOA *ppResult)
- {
- Log("getaddrinfo called with ");
- Log((char*)pNodeName);
- Log("\n");
- return org_getaddrinfo("127.0.0.1", pServiceName, pHints, ppResult);
- }
- INT64 mycurlsetopt(INT64 a1, INT64 a2, ...)
- {
- va_list va;
- va_start(va, a2);
- INT64* pTmp = (INT64*)&va;
- INT64* pTmp2 = (INT64*)(*pTmp);
- sprintf(textBuffer, "curl_setopt called for id %d\n\0", a2);
- Log(textBuffer);
- if(a2 == 64 || a2 == 81)
- {
- *pTmp2 = 0;
- Log("SSL Patched\n");
- }
- return org_curlsetopt(a1, a2, *pTmp2);
- }
- bool IsProcessRunning(const wchar_t* const processName) {
- PROCESSENTRY32 entry;
- entry.dwSize = sizeof(PROCESSENTRY32);
- const auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
- if (!Process32First(snapshot, &entry)) {
- CloseHandle(snapshot);
- return false;
- }
- do {
- if (!_wcsicmp(entry.szExeFile, processName)) {
- CloseHandle(snapshot);
- return true;
- }
- } while (Process32Next(snapshot, &entry));
- CloseHandle(snapshot);
- return false;
- }
- void Hack1();
- void Hack2();
- void HackMain()
- {
- char moduleName[MAX_PATH];
- GetModuleFileNameA(NULL, moduleName, MAX_PATH);
- if (strstr(moduleName, "\\ws.exe") == NULL)
- return;
- Log("Start\n");
- if (MH_Initialize() != MH_OK)
- {
- Log("Minhook init failed\n");
- return;
- }
- Log("Minhook init done\n");
- Hack1();
- Hack2();
- }
- void Hack1()
- {
- HMODULE h = GetModuleHandleA("ws2_32.dll");
- if(h == NULL)
- {
- Log("ws2_32.dll not found\n");
- return;
- }
- Log("ws2_32.dll found...\n");
- FARPROC address = GetProcAddress(h, "getaddrinfo");
- if(address == NULL)
- {
- Log("getaddrinfo not found\n");
- return;
- }
- Log("getaddrinfo found...\n");
- if (MH_CreateHook(address, &mygetaddrinfo, reinterpret_cast<LPVOID*>(&org_getaddrinfo)) != MH_OK)
- {
- Log("Installing hook failed\n");
- return;
- }
- Log("Hook installed\n");
- if (MH_EnableHook(address) != MH_OK)
- {
- Log("Enabling hook failed\n");
- return;
- }
- Log("Hook enabled\n");
- }
- void Hack2()
- {
- HMODULE h = GetModuleHandleA("libcurl.dll");
- if(h == NULL)
- {
- Log("libcurl.dll not found\n");
- return;
- }
- Log("libcurl.dll found...\n");
- FARPROC address = GetProcAddress(h, "curl_easy_setopt");
- if(address == NULL)
- {
- Log("curl_easy_setopt not found\n");
- return;
- }
- Log("curl_easy_setopt found...\n");
- if (MH_CreateHook(address, &mycurlsetopt, reinterpret_cast<LPVOID*>(&org_curlsetopt)) != MH_OK)
- {
- Log("Installing hook failed\n");
- return;
- }
- Log("Hook installed\n");
- if (MH_EnableHook(address) != MH_OK)
- {
- Log("Enabling hook failed\n");
- return;
- }
- Log("Hook enabled\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement