а вот (архив ниже) первый сырой проход декомпилятором Бота - Пиратес - может можно что тут понять ..
Декомпилировал с диска .. так что это не отображение в памяти .. к сожалению, но процедуры видимо не отличаются по содержанию как на диске и в RAM ..
С .. файл лучше смотреть в VC++ или в редакторе Borland.
много вставок Ассемблерного кода в листинге - видимо для вычислений ..
что то не видно явного инжекта .. может и нету ??? ..))
например ..
__asm
{
fld [esp+14h+var_14]
fld tbyte_40F1F4
fcompp st(1), st
fstsw ax
sahf
}
эта функция интересная -
//----- (004F64DC) --------------------------------------------------------
int __usercall sub_4F64DC<eax>(unsigned int a1<eax>, DWORD a2<ecx>)
{
unsigned int v2; // ebx@1
int result; // eax@10
DWORD ThreadId; // [sp+0h] [bp-8h]@1
ThreadId = a2;
v2 = a1;
byte_51A0F4[a1] = 1;
byte_51A150[a1] = 0;
dword_51A044[a1] = sub_423E80((int)off_41E9EC, 1);
dword_51A054[v2] = sub_423E80((int)off_41E9EC, 1);
byte_51A0FC[v2] = 0;
Sleep_1(0x32u);
if ( v2 < 1 )
{
*(&dword_51A08C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A07C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0D4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0E4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A09C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0AC + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
dword_51A0BC[v2] = System__BeginThread(0, 0, &ThreadId, 0, 0);
}
else
{
switch ( v2 )
{
case 1u:
*(&dword_51A08C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A07C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0D4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0E4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A09C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0AC + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
dword_51A0BC[v2] = System__BeginThread(0, 0, &ThreadId, 0, 0);
break;
case 2u:
*(&dword_51A08C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A07C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0D4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0E4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A09C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0AC + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
dword_51A0BC[v2] = System__BeginThread(0, 0, &ThreadId, 0, 0);
break;
case 3u:
*(&dword_51A08C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A07C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0D4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0E4 + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A09C + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
*(&dword_51A0AC + v2) = (HANDLE)System__BeginThread(0, 0, &ThreadId, 0, 0);
dword_51A0BC[v2] = System__BeginThread(0, 0, &ThreadId, 0, 0);
break;
}
}
Sleep_1(0x32u);
return result;
}
------------------------------------------------------
а тут явная пересылка данных в памяти клиента ..
ReadProcessMemory(*(&hProcess + a1), (LPCVOID)*off_5130E0, &Buffer, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(Buffer + *off_5136D0), &Buffer, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(Buffer + *off_513588), &Buffer, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(Buffer + *off_5131BC), &Buffer, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(Buffer + *off_5134E4), &Buffer, 4u, &NumberOfBytesRead);
v9 = Buffer;
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(Buffer + *(_DWORD *)off_513124), &v5, 1u, &NumberOfBytesRead);
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(Buffer + *off_5131F4), &a4, 4u, &NumberOfBytesRead);
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(Buffer + *off_513110), &a3, 4u, &NumberOfBytesRead);
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(Buffer + *off_5136A0), &v6, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)*off_5130E0, &v10, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(v10 + *off_5136D0), &v10, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(v10 + *off_513588), &v10, 4u, &NumberOfBytesRead);
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(v10 + *off_51300C), &v7, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)*off_5130E0, &v10, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(v10 + *off_5136D0), &v10, 4u, &NumberOfBytesRead);
ReadProcessMemory(*(&hProcess + v3), (LPCVOID)(v10 + *off_513588), &v10, 4u, &NumberOfBytesRead);
WriteProcessMemory(*(&hProcess + v3), (LPVOID)(v10 + *off_513838), &v9, 4u, &NumberOfBytesRead);