Можно конечно попытаться реверсить алгоритм шифрования)
Библиотека и результат работы декомпилятора IDA PRO во вложении))
Кстати вот-тут интересный кусочек кода попался на глаза:
Код: Выделить всё
if ( v16 )
{
v18 = (int (__stdcall *)(_DWORD))sub_100014F0(1, -1534236812);
v19 = v18(L"ws2_32.dll");
v20 = (void (__stdcall *)(_DWORD))sub_100014F0(1, -1534236812);
v20(L"kernel32.dll");
v21 = (int (__stdcall *)(_DWORD))sub_100014F0(1, -1534236812);
v22 = v21(0);
dword_1000B6B8 = (int)GetProcAddress;
v23 = (int (__stdcall *)(_DWORD, _DWORD))sub_100014F0(0, 532736750);
dword_1000B6BC = (int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD))v23(v19, "send");
v24 = (int (__stdcall *)(_DWORD, _DWORD))sub_100014F0(0, 532736750);
dword_1000B6B0 = (int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD))v24(v19, "recv");
v25 = (int (__stdcall *)(_DWORD, _DWORD))sub_100014F0(0, 532736750);
dword_1000B6B4 = (int (*)(void))v25(v19, "closesocket");
sub_10001000(v22, (int)"kernel32.dll", dword_1000B6B8, (unsigned int)sub_100011D0);
sub_10001000(v22, (int)"ws2_32.dll", (int)dword_1000B6BC, (unsigned int)sub_100010E0);
sub_10001000(v22, (int)"ws2_32.dll", (int)dword_1000B6B0, (unsigned int)sub_10001150);
sub_10001000(v22, (int)"ws2_32.dll", (int)dword_1000B6B4, (unsigned int)sub_100011B0);
v26 = (void (__stdcall *)(_DWORD))sub_100014F0(1, 1585373392);
v26(v16);
v27 = (void (__stdcall *)(_DWORD))sub_100014F0(1, 1916711125);
v27(v16);
}
Добавлено спустя 3 минуты 29 секунд:
А это похоже на сам обработчик send, 4 аргумента как и у оригинальной функции.
Осталось понять как это работает))
Код: Выделить всё
//----- (100010E0) --------------------------------------------------------
int __stdcall sub_100010E0(int a1, int a2, int a3, int a4)
{
int v4; // eax@1
void *v5; // edi@1
size_t v6; // ST10_4@1
int v7; // edx@2
void *v8; // ecx@2
char v9; // bl@3
int v11; // esi@6
v5 = malloc(v6);
v4 = dword_1000B6C0;
if ( a3 > 0 )
{
v8 = v5;
v7 = a3;
do
{
v9 = byte_10009280[v4++] ^ *((_BYTE *)v8 + a2 - (_DWORD)v5);
*(_BYTE *)v8 = v9;
if ( v4 == 1024 )
v4 = 0;
v8 = (char *)v8 + 1;
--v7;
}
while ( v7 );
}
dword_1000B6C0 = v4;
v11 = dword_1000B6BC(a1, v5, a3, a4);
free(v5);
return v11;
}