Skip to content

Commit

Permalink
Pool redirection (nodevfeePools.txt). -eworker support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Demion committed Nov 3, 2017
1 parent 2f1c5f1 commit 8929dd8
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 21 deletions.
136 changes: 116 additions & 20 deletions nodevfeeDll/Source/main.cpp
Expand Up @@ -6,46 +6,80 @@ bool Initial = true;

char Wallet[42] = {0};

FILE *LogFile = 0, *WalletFile = 0;
FILE *LogFile = 0, *WalletFile = 0, *PoolsFile = 0;

struct Pool
{
char Address[256];

unsigned int Port;
};

Pool Pools[256] = {0};

int PoolCount = 0;

int (__stdcall *sendOriginal)(SOCKET s, const char *buf, int len, int flags);
int (__stdcall *connectOriginal)(SOCKET s, const struct sockaddr *name, int namelen);

static void Error(const char *format, int result)
{
char error[1024] = {0};

sprintf(error, format, result);

MessageBoxA(0, error, "NoDevFee", 0);
MessageBoxA(0, error, "NoDevFeeDll", 0);
}

int __stdcall sendHook(SOCKET s, const char *buf, int len, int flags)
{
if (memcmp(buf + len - 18, "eth_submitLogin", 15) == 0)
if (strstr(buf, "eth_submitLogin") != 0)
{
if (Initial)
const char *wallet = strstr(buf, "\"params\": [\"");

if (wallet != 0)
{
memcpy(Wallet, buf + 51, 42);
wallet += 12;

Initial = false;
}
if (Initial)
{
memcpy(Wallet, wallet, 42);

Initial = false;
}

memcpy((char*) (buf + 51), Wallet, 42);
memcpy((void*) wallet, Wallet, 42);

printf("NoDevFee: eth_submitLogin -> %s\n", Wallet);
printf("NoDevFee: eth_submitLogin -> %s\n", Wallet);
}
else
{
printf("NoDevFee: eth_submitLogin -> Error\n");
}
}
else if (memcmp(buf + 34, "eth_login", 9) == 0)
else if (strstr(buf, "eth_login") != 0)
{
if (Initial)
const char *wallet = strstr(buf, "\"params\":[\"");

if (wallet != 0)
{
memcpy(Wallet, buf + 56, 42);
wallet += 11;

Initial = false;
}
if (Initial)
{
memcpy(Wallet, wallet, 42);

memcpy((char*) (buf + 56), Wallet, 42);
Initial = false;
}

memcpy((void*) wallet, Wallet, 42);

printf("NoDevFee: eth_login -> %s\n", Wallet);
printf("NoDevFee: eth_login -> %s\n", Wallet);
}
else
{
printf("NoDevFee: eth_login -> Error\n");
}
}

if (LogFile)
Expand All @@ -63,6 +97,47 @@ int __stdcall sendHook(SOCKET s, const char *buf, int len, int flags)
return sendOriginal(s, buf, len, flags);
}

int __stdcall connectHook(SOCKET s, const struct sockaddr *name, int namelen)
{
sockaddr_in *addr = (sockaddr_in*) name;

if (PoolCount > 1)
{
for (int i = 1; i < PoolCount; ++i)
{
hostent *host = gethostbyname(Pools[i].Address);

if (host != 0)
{
if ((host->h_addrtype == addr->sin_family) && (addr->sin_port == htons(Pools[i].Port)) && (addr->sin_addr.S_un.S_addr == ((in_addr*) host->h_addr_list[0])->S_un.S_addr))
{
host = gethostbyname(Pools[0].Address);

if (host != 0)
{
addr->sin_port = htons(Pools[0].Port);
addr->sin_addr.S_un.S_addr = ((in_addr*) host->h_addr_list[0])->S_un.S_addr;

printf("NoDevFee: connect -> %s:%d\n", Pools[0].Address, Pools[0].Port);

break;
}
}
}
}
}

if (LogFile)
{
fprintf(LogFile, "s = 0x%04X sin_family = 0x%04X sin_addr = %s sin_port = %4d namelen = %4d\n\n",
(unsigned int) s, addr->sin_family, inet_ntoa(addr->sin_addr), ntohs(addr->sin_port), namelen);

fflush(LogFile);
}

return connectOriginal(s, name, namelen);
}

static void Hook()
{
LogFile = fopen("nodevfeeLog.txt", "r");
Expand All @@ -84,6 +159,18 @@ static void Hook()
fclose(WalletFile);
}

PoolsFile = fopen("nodevfeePools.txt", "r");

if (PoolsFile)
{
fscanf(PoolsFile, "%d\n", &PoolCount);

for (int i = 0; i < PoolCount; ++i)
fscanf(PoolsFile, "%s %d\n", Pools[i].Address, &Pools[i].Port);

fclose(PoolsFile);
}

MH_STATUS result = MH_UNKNOWN;

result = MH_Initialize();
Expand All @@ -94,16 +181,25 @@ static void Hook()

if (result == MH_OK)
{
result = MH_EnableHook(MH_ALL_HOOKS);
result = MH_CreateHookApi(L"ws2_32.dll", "connect", connectHook, (void**) &connectOriginal);

if (result != MH_OK)
if (result == MH_OK)
{
result = MH_EnableHook(MH_ALL_HOOKS);

if (result != MH_OK)
{
Error("MH_EnableHook error #%X", result);
}
}
else
{
Error("MH_EnableHook error #%X", result);
Error("MH_CreateHookApi connect error #%X", result);
}
}
else
{
Error("MH_CreateHookApi error #%X", result);
Error("MH_CreateHookApi send error #%X", result);
}
}
else
Expand Down
2 changes: 1 addition & 1 deletion nodevfeeDll/nodevfeeDll.vcxproj
Expand Up @@ -140,7 +140,7 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
Expand Down

0 comments on commit 8929dd8

Please sign in to comment.