рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рд╕рдордп-рд╕рдордп рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ MMO рдЧреЗрдо рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдпрд╛ рдХреБрдЫ рдЧреЗрдо рдкрд╣рд▓реБрдУрдВ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рдЖрддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдЬрд╛рдирдХрд╛рд░реА IDA Pro рдпрд╛ OllyDbg рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реЗ рдЖрддреА рд╣реИред
рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдПрдХ рдЯреНрд░рд┐рдЯ рддрд░реАрдХреЗ рд╕реЗ рд▓реЗрддрд╛ рд╣реВрдВ, рдПрдХ dll рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЖрдИрдбреАрдП рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬреЛ рд╕рдЪ рд╣реИ рдЕрдХреНрд╕рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд▓реВрд╡рд╛ рдлрд╝рдВрдХреНрд╢рди, lua_state рдХреЛ рдЗрдбрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдбреАрдПрд▓ рдХрднреА-рдХрднреА рдХреЗрд╡рд▓ рдПрдХ рдЕрд╢реНрд▓реАрд▓ рд░рд╛рд╢рд┐ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ, рдЙрдирдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫреЗ рднреА рд╣реЛрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХрд┐рд▓реЛрдореАрдЯрд░ рдХреЗ рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╕реБрдВрджрд░рддрд╛ рдХрд╛ рдкреАрдЫрд╛ рд╣рдо рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ "рдЯреИрдореНрдк" рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреАрдПрд▓ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВ рдореИрдХреНрд░реЛрдЬрд╝, рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд╕рдВрднрд╡рддрдГ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
рдФрд░ рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореБрдЭреЗ 1 рдореИрдХреНрд░реЛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди, рдЪрд░ рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫрд╛рдИ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░реНрдХ рд╕реВрдЪреА рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВрдиреЗ __cdecl рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд▓рд┐рдЦрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬреНрдЮрд╛рди рдХрд╛ рд╕реНрддрд░ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдорд╛рди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ x86 рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╢рд╛рдпрдж рдХреБрдЫ рдЕрдиреНрдп рд╕реАрдорд╛рдПрдВ рд╣реИрдВ)ред рдЕрд╡рд░реЛрдзрди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдбреЗрдЯреНрд░реЙрдПрдЬрд╝ x86 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХрднреА-рдХрднреА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдирд╛рд▓реЙрдЧред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб:
#define cdecl_hook(name1)\ void name1##_hook(int a1, ...)\ {\ int check_s = 0;\ __asm{mov check_s, esp}\ int *ptr = &a1;\ debug_msg("Advanced",true,"--%s arg list started--", __FUNCTION__);\ for(int i=0; i*4<name1##_arg_amount; i++)\ {\ debug_msg("Advanced",true," |---Element %d: %d", i, ptr[i]);\ }\ /*Arg list -> file(Advanced.txt)*/ debug_msg("Advanced",true,"--arg list finished--\n");\ __asm{lea ecx, a1}\ /*Move addr of a1 to ecx*/ __asm{mov eax, name1##_arg_amount}\ /*move size of args in stack(can get from IDA, for ex.) to eax*/ __asm{label_loop: }\ /*Start loop*/ __asm{mov ebx, dword ptr[ecx+eax-4]}\ /*Move args from stack to ebx in loop and push ebx*/ __asm{push ebx}\ __asm{sub eax,4}\ __asm{cmp eax,0}\ __asm{jg label_loop}\ __asm{call dword ptr[name1##_Detour]}\ /*Call original function*/ __asm{mov esp, check_s}\ /*Restore stack, same as __asm{add esp, name1##_arg_amount}*/ }\
#define RF_O_UP_FUNC(name1, address, args)\ typedef void (* t##name1 ) ();\ t##name1 name1##_Detour = ( t##name1 ) ( address );\ void name1##_hook(int a1, ...);\ int name1##_arg_amount = args;\ cdecl_hook(name1);
рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдм рд╕рд╛рдорд╛рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
RF_O_UP_FUNC(resources, 0x687054, 0x4C); RF_O_UP_FUNC(hooker, 0x17E4D18, 7); RF_O_UP_FUNC(begin, 0x689BA0, 5);
рдЗрд╕рд▓рд┐рдП, 1 рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рд╣рдо рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдореИрдХреНрд░реЛ рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рдЕрдЧрд░ рд╣рдо рдбреЗрдЯреНрд░реЛрдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рдЧрд╛рд╡ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
DetourAttach(&(PVOID&)resources_Detour, resources_hook).
рдмрд╛рдХреА, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рддрд░реНрдХ рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг:
--resources_hook arg list started-- |---Element 0: 204181 |---Element 1: 204181 |---Element 2: 1277574 |---Element 3: 1363294854 |---Element 4: 1 |---Element 5: 0 |---Element 6: 0 |---Element 7: 0 |---Element 8: 0 |---Element 9: 0 |---Element 10: 0 |---Element 11: 0 |---Element 12: 0 |---Element 13: 0 |---Element 14: 0 |---Element 15: 0 |---Element 16: 1 |---Element 17: 100 |---Element 18: 1 --arg list finished--
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЫреЛрдЯреЗ рдореИрдХреНрд░реЛ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреА рдорджрдж рд╕реЗ, рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред
рдиреБрдХрд╕рд╛рди:
1) рд╡рд░реНрддрдорд╛рди рдореЗрдВ __stdcall, __thiscall рдФрд░ рдЕрдиреНрдп рдХреЙрд▓рд┐рдВрдЧ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдпрд╛ рд╕рд▓рд╛рд╣ рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
2) рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЕрдзрд┐рдХ рдЯреНрд░реЛрд▓ рди рдХрд░реЗрдВред
3) рдореБрдЭреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдирд╣реАрдВ рдорд┐рд▓реЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВ / рд╡рд░реНрддрдорд╛рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рднреА рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!