Декомпиляция машинного кода

Jan 16, 2008 02:45

Офигеть.



int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
void *v4; // edi@3
int result; // eax@4
HMODULE v6; // eax@1
HMODULE v7; // eax@1
MSG Msg; // [sp+Ch] [bp-1Ch]@9

dword_410DC0 = hInstance;
v6 = GetModuleHandleA(0);
LoadStringW(v6, 0x66u, (LPWSTR)&word_410DF0, 255);
v7 = GetModuleHandleA(0);
LoadStringA(v7, 0x67u, Buffer, 33);
if ( !byte_410DC4 )
byte_410DC4 = sub_401187();
v4 = (void *)sub_402EAF();
if ( (unsigned __int8)sub_402F27() )
{
result = sub_4032C8(&hInstance);
if ( !result )
{
if ( v4 )
{
sub_40110C(hInstance);
while ( GetMessageA(&Msg, 0, 0, 0) )
{
TranslateMessage(&Msg);
DispatchMessageA(&Msg);
}
sub_401EAA();
j__free(v4);
result = Msg.wParam;
}
else
{
result = GetLastError();
}
}
}
else
{
MessageBoxA(0, "Parental controls prevent you from playing the game at this time", "Game Locked", 0);
result = 0;
}
return result;
}

Приведенный код сгенерил plugin для IDA который называется Hex-Rays. Да да, он декомпилирует ассемблер в некоторый псевдокод(то что вы видите это WinMain от игры Eve-Online, скомпилена она, судя по всему, на Microsoft Visual C++).

10 лет назад для развлечения ломая программки, я сам IDA считал верхом магии - надо же разобрать exe в ассемблер и автоматом понять что в вот этот mov eax, 0x00DFFF32 в одном случае этот самый 0x00DFFF32 это просто константа, а в другом адрес процедуры. А тут вот что...

reversing

Previous post Next post
Up