рд▓реЛрдХрдкреНрд░рд┐рдп рдмреИрдЯрд▓рдПрдИ рдПрдВрдЯрд┐рдЪрд┐рдЯрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


рдкреНрд░рдореБрдЦ рдмреИрдЯрд▓рдИрдпреЗ рд╢реЗрд▓рдХреЛрдб рдЕрдкрдбреЗрдЯ


рд╕рдордп рдмреАрдд рдЬрд╛рддрд╛ рд╣реИ, рдПрдВрдЯреА-рдЪреАрдЯ рдмрджрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЙрддреНрдкрд╛рдж рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ [рд╣реИрдмреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж ] рдореЗрдВ рдмреИрдЯрд▓рдИ рд╢реЗрд▓ рд╢реЗрд▓ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдФрд░ рд▓реЗрдЦ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╢реЗрд▓рдХреЛрдб рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣реЛрдЧрд╛ред

рдмреНрд▓реИрдХ рд▓рд┐рд╕реНрдЯреЗрдб рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкреНрд╕


рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмреИрдЯрд▓рдИрдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ, рдЫрд╛рдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рд╕рдВрдХрд▓рди рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдереЗ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:

0x5B12C900 (action_x64.dll)
0x5A180C35 (TerSafe.dll, Epic Games)
0xFC9B9325 (?)
0x456CED13 (d3dx9_32.dll)
0x46495AD9 (d3dx9_34.dll)
0x47CDEE2B (d3dx9_32.dll)
0x469FF22E (d3dx9_35.dll)
0x48EC3AD7 (D3DCompiler_40.dll)
0x5A8E6020 (?)
0x55C85371 (d3dx9_32.dll)
0x456CED13 (?)
0x46495AD9 (D3DCompiler_40.dll)
0x47CDEE2B (D3DX9_37.dll)
0x469FF22E (?)
0x48EC3AD7 (?)
0xFC9B9325 (?)
0x5A8E6020 (?)
0x55C85371 (?)


рдореИрдВ рд╢реЗрд╖ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛, рдФрд░ рджреЛ 0xF ******* рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдирд┐рд░реНрдзрд╛рд░рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИрд╢ рд╣реИрдВред рдХреБрдЫ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП @mottikraus рдФрд░ T0B1 рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

рдореЙрдбреНрдпреВрд▓ рдЪреЗрдХ


рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЦреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдмреИрдЯрд▓рдИ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреА рдЧрдгрдирд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдХреНрд╖рдг рд╕реЗ, рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛:

 void battleye::misc::module_unknown1() { if (!GetProcAddress(current_module, "NSPStartup")) return; if (optional_header.data_directory[4].size == 0x1B20 || optional_header.data_directory[4].size == 0xE70 || optional_header.data_directory[4].size == 0x1A38 || timestamp >= 0x5C600000 && timestamp < 0x5C700000) { report_module_unknown report = {}; report.unknown = 0; report.report_id = 0x35; report.val1 = 0x5C0; report.timestamp = timestamp; report.image_size = optional_header.size_of_image; report.entrypoint = optional_header.address_of_entry_point; report.directory_size = optional_header.data_directory[4].size; battleye::report(&report, sizeof(report), false); } } 

рдпрд╣ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдкреНрд░реЙрдХреНрд╕реА рдбреАрдПрд▓рдПрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдпрд╣рд╛рдВ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ рд╣реИред

рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╢реАрд░реНрд╖рдХ


рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдзреЛрдЦрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддрдм рд╕реЗ рд╢реЗрд▓рдХреЛрдб рдиреЗ рдЗрди рд╡рд┐рдВрдбреЛ рд╣реЗрдбрд░ рдХреА рдЬрд╛рдВрдЪ рдмрдВрдж рдХрд░ рджреА рд╣реИред рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рдХреА рд╕реВрдЪреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

Chod's
Satan5


рдЫрд╡рд┐ рдирд╛рдо


BattlEye рдмрд╣реБрдд рдЖрджрд┐рдо рдкрд╣рдЪрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЦреНрдпрд╛рдд рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдирд╛рдореЛрдВ рдХрд╛ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рд╣реИред рд╣рд░ рд╕рд╛рд▓, рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рд▓рдВрдмреА рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ 11 рдорд╣реАрдиреЛрдВ рдореЗрдВ рдкрд╛рдВрдЪ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ:

frAQBc8W.dll
C:\\Windows\\mscorlib.ni.dll
DxtoryMM_x64.dll
Project1.dll
OWClient.dll

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХрд┐рд╕реА рднреА рдЖрдЗрдЯрдо рдХреЗ рдЕрдиреБрд░реВрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдмреБрдирд┐рдпрд╛рджреА рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдирдХрд╛рд░реА рднреА рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдмреИрдЯрд▓рдПрдИрдИ рд╕рд░реНрд╡рд░ рдкрд░ рдЯрдХрд░рд╛рд╡ рд╕реЗ рдзреЛрдЦрд╛ рджреЗрддреА рд╣реИред

7-Zip


7-рдЬрд╝рд┐рдк рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреЛрдб voids рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдлрд┐рд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреАрдЯ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреИрдЯрд▓рдИ рдиреЗ рдПрдХ рдмрд╣реБрдд рдЦрд░рд╛рдм рдЕрдЦрдВрдбрддрд╛ рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдмрд╛рдж рдмрджрд▓ рдЧрдпрд╛ рд╣реИ:

 void module::check_7zip() { const auto module_handle = GetModuleHandleA("..\\..\\Plugins\\ZipUtility\\ThirdParty\\7zpp\\dll\\Win64\\7z.dll"); // --- REMOVED --- // if (module_handle && *(int*)(module_handle + 0x1000) != 0xFF1441C7) // --- ADDED --- if (module_handle && *(int*)(module_handle + 0x1008) != 0x83485348) { sevenzip_report.unknown_1 = 0; sevenzip_report.report_id = 0x46; sevenzip_report.unknown_2 = 0; sevenzip_report.data1 = *(__int64*)(module_handle + 0x1000; sevenzip_report.data2 = *(__int64*)(module_handle + 0x1008; battleye::report(&sevenzip_report, sizeof(sevenzip_report), false); } } 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдЯрд▓рд╡рд╛рдЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдиреЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдЪреЗрдХ рдХреЛ рдмрд╛рдИрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмреИрдЯрд▓рдИ рджреНрд╡рд╛рд░рд╛ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдкрд░ рдХреЙрдкреА рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛? рд╣рдордиреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЖрда рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдЙрд╕реА рдмреБрд░реЗ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд┐рднрд╛рдЬрди, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдбрд┐рд╕реНрдХ рд╕реЗ 7-рдЬрд╝рд┐рдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд┐рднрд╛рдЬрди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдЕрдЧрд░ рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЧрд▓рдд рд╣реИред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рджреЛрд╕реНрддреЛрдВ, рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред

рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЬрд╛рдБрдЪ


рдЯреАрд╕реАрдкреА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдХреНрд▓рд╛рдЙрдбрдлрд╝реНрд▓рд░реЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА, рддрдм рднреА рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЪреЗрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдПрдВрдЯреА-рдЪреАрдЯ рдЕрднреА рднреА рдЙрд╕ рдкреЛрд░реНрдЯ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП xera.ph рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ рдХрд┐ рдХреНрдпрд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╕реБрд░рдХреНрд╖рд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

 void network::scan_tcp_table { memset(local_port_buffer, 0, sizeof(local_port_buffer); for (iteration_index = 0; iteration_index; < 500 ++iteration_index) { // GET NECESSARY SIZE OF TCP TABLE auto table_size = 0; GetExtendedTcpTable(0, &table_size, false, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0); // ALLOCATE BUFFER OF PROPER SIZE FOR TCP TABLE auto allocated_ip_table = (MIB_TCPTABLE_OWNER_MODULE*)malloc(table_size); if (GetExtendedTcpTable(allocated_ip_table, &table_size, false, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0) != NO_ERROR) goto cleanup; for (entry_index = 0; entry_index < allocated_ip_table->dwNumEntries; ++entry_index) { // --- REMOVED --- // const auto ip_address_match_1 = // allocated_ip_table->table[entry_index].dwRemoteAddr == 0x656B1468; // 104.20.107.101 // // const auto ip_address_match_2 = // allocated_ip_table->table[entry_index].dwRemoteAddr == 0x656C1468; // 104.20.108.101 // +++ ADDED +++ const auto target_process = OpenProcess(QueryLimitedInformation, 0, ip_table->table[entry_index].dwOwningPid); const auto protected = target_process == INVALID_HANDLE && GetLastError() == 0x57; if (!protected) { CloseHandle(target_process); return; } const auto port_match = allocated_ip_table->table[entry_index].dwRemotePort == 20480; for (port_index = 0; port_index < 10 && allocated_ip_table->table[entry_index].dwLocalPort != local_port_buffer[port_index]; ++port_index) { if (local_port_buffer[port_index]) continue tcp_table_report.unknown = 0; tcp_table_report.report_id = 0x48; tcp_table_report.module_id = 0x5B9; tcp_table_report.data = BYTE1(allocated_ip_table->table[entry_index].dwLocalPort) | (LOBYTE(allocated_ip_table->table[entry_index.dwLocalPort) << 8; battleye::report(&tcp_table_report, sizeof(tcp_table_report), false); local_port_buffer[port_index] = allocated_ip_table->table[entry_index].dwLocalPort; break } } cleanup: // FREE TABLE AND SLEEP free(allocated_ip_table); Sleep(10 } } 

рдзрдиреНрдпрд╡рд╛рдж IChoose рдЖрдк рдФрд░ рд╕рд╛рд░

рдмрдЯрд▓рдЗрдпреЗ рд╕реНрдЯреИрдХ рдмрд╛рдпрдкрд╛рд╕


рд╣реИрдХрд┐рдВрдЧ рдЧреЗрдо рдмрд┐рд▓реНрд▓реА рдФрд░ рдЪреВрд╣реЗ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдЦреЗрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирдИ рдЪрд╛рд▓ рдХреА рдЕрдлрд╡рд╛рд╣ рдЖрдЧ рдХреА рддрд░рд╣ рдлреИрд▓ рд░рд╣реА рд╣реИред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдирдИ рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рддрдХрдиреАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдВрдЯреА-рдЪреАрдЯреНрд╕ рдмреИрдЯрд▓рдИ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗред рдЬреНрдпрд╛рджрд╛рддрд░, рдЗрди рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рд╡реЙрдХрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдХреЗ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддрд░рд╣, рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рд╣реИрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рд╡реЗ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдХреБрдЫ рдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рдЫреБрдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдореЗрдореЛрд░реА рдореЗрдВ рд╣реЛ рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░, рддрд╛рдХрд┐ рдПрдВрдЯреА-рдЪреАрдЯ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрдиреНрд╣реЗрдВ рди рдорд┐рд▓реЗред рд▓реЗрдХрд┐рди рдЬреЛ рдЪреАрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЬреНрдЮрд╛рдд рдзреЛрдЦрд╛ рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдЯреИрдХ std::print рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЗрдВрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рд╣рдо рдЗрди рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдирдХрд╛рдмрдкреЛрд╢ рд╣реЛрдВред

рдмреИрдЯрд▓рдИ рдиреЗ рдПрдХ "рд╕реНрдЯреИрдХ рдмрд╛рдИрдкрд╛рд╕" рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ , рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп рдХреЗрд╡рд▓ рдЕрдлрд╡рд╛рд╣реЗрдВ рдереАрдВред рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдЖрдк рдпрд╣рд╛рдВ рдЬреЛ рджреЗрдЦреЗрдВрдЧреЗ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреИрдХ рдЯреВрд░ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдФрд░ рдбрдВрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИред рдПрдХ рд╕рдЪреНрдЪреЗ рд╕реНрдЯреИрдХ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдмреИрдЯрд▓рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдпрд╛ рдерд╛, рдПрдВрдЯреА-рдЪреАрдЯ рд╕рд┐рд╕реНрдЯрдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╢реЗрд▓рдХреЛрдб рдХреЛ рдЦреЗрд▓ рдореЗрдВ рддрдм рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрди рд╢реЗрд▓ рдХреЛрдб рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдФрд░ рдХрд╛рд░реНрдп рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреА рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдореИрдЪ рдХреЗ рджреМрд░рд╛рди рдПрдВрдЯреА-рдЪреАрдЯ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЗрд╕ рдПрдВрдЯреА-рдЪреАрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдВрдЯреА-рдЪреАрдЯ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд╛рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЖрдХреНрд░рд╛рдордХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╣рддреНрдпрд╛рдУрдВ рдФрд░ рдореМрддреЛрдВ рдХрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдЕрдиреБрдкрд╛рдд рд╣реИ, рдФрд░ рдЬреИрд╕реЗред

рдЗрди рд╢реЗрд▓ рдХреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ, рдмреИрдЯрд▓рдИ, рдЗрд╕ рд╕реНрдЯреИрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ; рд╣рдо рдЗрд╕реЗ shellcode8kb рдХрд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реЗрд▓рдХреЛрдбреЗрдореИрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд┐рдд рдХрд┐рдпрд╛ рдерд╛ ред AddVectoredExceptionHandler рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рдЫреЛрдЯрд╛ рд╢реЗрд▓ рдХреЛрдб рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдЯреНрд░реИрдк рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

GetAsyncKeyState
GetCursorPos
IsBadReadPtr
NtUserGetAsyncKeyState
GetForegroundWindow
CallWindowProcW
NtUserPeekMessage
NtSetEvent
sqrtf
__stdio_common_vsprintf_s
CDXGIFactory::TakeLock
TppTimerpExecuteCallback


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЛ int3 рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдХреЙрд▓ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдФрд░ рд╕реНрдЯреИрдХ рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд╛рдж, рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрддрд╛ рдбрдВрдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣реЗрдпреБрд░реЗрдЯрд┐рд╡ рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ 32 рдмрд╛рдЗрдЯреНрд╕ рдбрдВрдк рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ 0x31 рдХреЗ рд╕рд╛рде рдмреИрдЯрд▓рдЗрд╡реЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ:

 __int64 battleye::exception_handler(_EXCEPTION_POINTERS *exception) { if (exception->ExceptionRecord->ExceptionCode != STATUS_BREAKPOINT) return 0; const auto caller_function = *(__int64 **)exception->ContextRecord->Rsp; MEMORY_BASIC_INFORMATION caller_memory_information = {}; auto desired_size = 0; // QUERY THE MEMORY PAGE OF THE CALLER const auto call_failed = NtQueryVirtualMemory( GetCurrentProcess(), caller_function, MemoryBasicInformation, &caller_memory_information, sizeof(caller_memory_information), &desired_size) < 0; // IS THE MEMORY SOMEHOW NOT COMMITTED? (WOULD SUGGEST VAD MANIPULATIUON) const auto non_commit = caller_memory_information.State != MEM_COMMIT; // IS THE PAGE EXECUTABLE BUT DOES NOT BELONG TO A PROPERLY LOADED MODULE? const auto foreign_image = caller_memory_information.Type != MEM_IMAGE && caller_memory_information.RegionSize > 0x2000; // IS THE CALL BEING SPOOFED BY NAMAZSO? const auto spoof = *(_WORD *)caller_function == 0x23FF; // jmp qword ptr [rbx] // FLAG ALL ANBORMALITIES if (call_failed || non_commit || foreign_image || spoof) { report_stack.unknown = 0; report_stack.report_id = 0x31; report_stack.hook_id = hook_id; report_stack.caller = (__int64)caller_function; report_stack.function_dump[0] = *caller_function; report_stack.function_dump[1] = caller_function[1]; report_stack.function_dump[2] = caller_function[2]; report_stack.function_dump[3] = caller_function[3]; if (!call_failed) { report_stack.allocation_base = caller_memory_information.AllocationBase; report_stack.base_address = caller_memory_information.BaseAddress; report_stack.region_size = caller_memory_information.RegionSize; report_stack.type_protect_state = caller_memory_information.Type | caller_memory_information.Protect | caller_memory_information.State; } battleye::report(&report_stack, sizeof(report_stack), false); return -1; } } 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕рднреА рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореЗрдореЛрд░реА рдкреЗрдЬ рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдордпрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╛ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдЬреНрдЮрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдореЗрдореЛрд░реА рдкреЗрдЬ рдкреНрд░рдХрд╛рд░ MEM_IMAGE рдореИрдиреБрдЕрд▓рдореИрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдпрд╣ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдбрдВрдк рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ NtQueryVirtualMemory рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдзреЛрдЦрд╛ рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рди рд╣реЛ рдФрд░ рд╕реНрдЯреИрдХ рдбрдВрдк рд╕реЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЫрд┐рдкрд╛рдПред рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдпрд╣ рд╕рднреА рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ jmp qword ptr [rbx] рдЧреИрдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - "рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрд░реАрдХрд╛ред рдпрд╣ рдореЗрд░реЗ рд╕рд╣-рд╕рдЪрд┐рд╡ рд╕рджрд╕реНрдп рдЙрдкрдирд╛рдо рдирдорд╛рдЬрд╝реЛ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдЯрд▓рдИ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЦреЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдкреВрдлрд┐рдВрдЧ рдХреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ рдЙрд╕ рдкрд░ рдирд┐рд╢рд╛рдирд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдирдорд╛рдЬрд╝реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдмрд╕ рдПрдХ рдЕрд▓рдЧ рдЧреИрдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ, рдпрд╛ рдмрд╕ рдПрдХ рдЕрд▓рдЧ рд░рдЬрд┐рд╕реНрдЯрд░ - рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред

рдмреИрдЯрд▓рдПрд╡ рдбреЗрд╡рд▓рдкрд░ рдЯрд┐рдк: CDXGIFactory::TakeLock рдЕрдкрдиреА рдореЗрдореЛрд░реА рдореЗрдВ CDXGIFactory::TakeLock рд╡рд╣ рдЧрд▓рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ (рдЧрд▓рддреА рд╕реЗ рдпрд╛ рдЬрд╛рдирдмреВрдЭрдХрд░) CC рдкреИрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреИрдбрд┐рдВрдЧ (рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ) рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓реЗ рдерд┐рдПрдЯрд░реЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ :)

рдмрд╛рдЯрд▓рдИрдпреЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреА рдЧрдИ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 struct __unaligned battleye_stack_report { __int8 unknown; __int8 report_id; __int8 val0; __int64 caller; __int64 function_dump[4]; __int64 allocation_base; __int64 base_address; __int32 region_size; __int32 type_protect_state; }; 

рдмрд╛рдЯрд▓реАрдпреЗ рдореЗрдВ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рдорд╛рдиреНрдпрддрд╛


рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдЦреЗрд▓ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрд┐рд▓реНрд▓реА рдФрд░ рдЪреВрд╣реЗ рдХрд╛ рдЦреЗрд▓, рд╢реЛрд╖рдг рдореЗрдВ рдирд╡рд╛рдЪрд╛рд░ рдФрд░ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝рд╛рдИ рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рдмрдирд╛ рд╣реБрдЖ рд╣реИред рд╣реИрдХрд┐рдВрдЧ рдЧреЗрдореНрд╕ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдбрд┐рдореЛрди рд╕рд╛рддреЛрд╢реА рдЯрд╛рдВрдбрд╛ рдФрд░ рдПрдЪрд╡реАрдкреА рдкреАрдЯрд░ рдмреЗрдиреНрд╕ рдЬреИрд╕реЗ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░реНрд╕ рдХреЗ рдЖрдЧрдорди рдХреЗ рдмрд╛рдж рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рд▓рдЧрд╛ред рдЗрди рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдХрд╛рд░рдг рднреВрдорд┐рдЧрдд рд╣реИрдХрд░ рджреГрд╢реНрдп рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднреБрдЧрддрд╛рди рдХрд┐рдП рдЧрдП рдзреЛрдЦрд╛ рджреЗрддреА рд╣реИред рдЗрди рд░рд┐рд▓реАрдЬ рд╕реЗ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░реНрд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреА рджреМрдбрд╝ рдореЗрдВ рддреЗрдЬреА рдЖрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреЛ рдЕрдм рдЧреЗрдо рд╣реИрдХрд░реНрд╕ рдХреЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рд▓рдЧрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдирд╛рдо wlan рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЧреЗрдорд┐рдВрдЧ рд╣реИрдХрд┐рдВрдЧ рд╕рдореБрджрд╛рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкреНрд░рд╢рд╛рд╕рдХ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ:

рд╣реИрдХрд┐рдВрдЧ рдЧреЗрдореНрд╕ рдХреЗ рд▓рд┐рдП рд░реЗрдбреА-рдЯреВ-рдпреВрдЬрд╝ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд╝рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдмреИрдЯрд▓реА рдЬреИрд╕реЗ рдПрдВрдЯреА-рдЪреАрдЯ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХреА рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рдиреНрдпрддрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░реНрд╕ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдПрдВрдЯреА-рдЪреАрдЯ рдореЗрдВ рд╣рд╛рд▓ рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬрд┐рд╕рдиреЗ рд╣реИрдХрд░реНрд╕ рдХреЛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХреЛрдВ рд╕реЗ рдЧреЗрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╣реБрдд рдХрдо рдЕрд╡рд╕рд░ рдЫреЛрдбрд╝ рджрд┐рдП рд╣реИрдВред рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░реНрд╕ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдПрдВрдЯреА-рдЪреАрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреА рд╕рд╛рджрдЧреА рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рд┐рд╕рдХреЙрд▓ рд╣реБрдХ рдФрд░ рдПрдордПрдордпреВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдЬреИрд╕реЗ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдмреИрдЯрд▓рдПрдИ рдиреЗ рд╕рдордп-рд╕рдордп рдкрд░ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдбрдбрд┐рдореЛрди, рдПрдЪрд╡реАрдкреАрдкреА) рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░реНрд╕ рдХреА рдорд╛рдиреНрдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдорд╛рдиреНрдпрддрд╛ рдЧреИрд░-рдорд╛рдирдХ CPUID рдЕрдиреБрджреЗрд╢ рд╕рдордп рдорд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИред рд╕реАрдкреАрдпреВрдЖрдИрдбреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд▓рд╛рдЧрдд рд╡рд╛рд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рджреЛ рд╕реМ рдЪрдХреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдЗрдВрдЬрди рдХреЗ рдХрд╛рд░рдг рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг рджрд╕ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдЗрдВрдЬрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдордирдорд╛рдирд╛ рдорд╛рдирджрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЕрддрд┐рдерд┐ рдХреЛ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

рдордЬреЗрджрд╛рд░ рддрдереНрдп: рд╕реАрдкреАрдпреВрдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрди рдЕрд╕реНрдерд╛рдпреА рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рд╢рд░реНрдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реАрдкреАрдпреВрдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдмрд╛рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП; рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рд╕рдордп рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк XSETBV рдЬреИрд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдирд┐рдХрд╛рд╕ рднреА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрд╡рддрдВрддреНрд░ рд╕рдордп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд╡рд░реЛрдзрдХ рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддрд╛рдХрд┐ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреЛрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рди рд╣реЛ, рдЬрд┐рд╕рд╕реЗ рд╕рдордп рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛред

рдорд╛рдиреНрдпрддрд╛


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд BattlEye "BEClient2" рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ; рдореИрдВрдиреЗ рдЗрд╕рдХреА рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдФрд░ рдЫрджреНрдо рд╕реА рдореЗрдВ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдЯреНрд╡реАрдЯ рдХреЗ рдЕрдЧрд▓реЗ рджрд┐рди, рдмреИрдЯрд▓рд╡рд╛рдЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ BEClient2 рдХреЗ рдЖрдХреНрд╖реЗрдк рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рдкрд┐рдЫрд▓реЗ рдЖрдХреНрд╖реЗрдк рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓реЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рдЯреНрд╡реАрдЯ рдХреЗ рдмрд╛рдж рджрд┐рди рдмрджрд▓ рдЧрдпрд╛ - рдПрдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЧрддрд┐ред

 void battleye::take_time() { // SET THREAD PRIORITY TO THE HIGHEST const auto old_priority = SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); // CALCULATE CYCLES FOR 1000MS const auto timestamp_calibrator = __rdtsc(); Sleep(1000); const auto timestamp_calibration = __rdtsc() - timestamp_calibrator; // TIME CPUID auto total_time = 0; for (std::size_t count = 0; count < 0x6694; count++) { // SAVE PRE CPUID TIME const auto timestamp_pre = __rdtsc(); std::uint32_t cpuid_data[4] = {}; __cpuid(cpuid_data, 0); // SAVE THE DELTA total_time += __rdtsc() - timestamp_pre; } // SAVE THE RESULT IN THE GLOBAL REPORT TABLE battleye::report_table[0x1A8] = 10000000 * total_time / timestamp_calibration / 0x65; // RESTORE THREAD PRIORITY SetThreadPriority(GetCurrentThread(), old_priority); } 

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛, рдмрд┐рдирд╛ рд╢рд░реНрдд рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рдорд╛рдиреНрдпрддрд╛ рддрдХрдиреАрдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдирдХрд▓реА рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдорд╛рдиреНрдпрддрд╛ рдмрд╛рдИрдкрд╛рд╕


рдЗрд╕ рдорд╛рдиреНрдпрддрд╛ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдирдХрд▓реА рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рджреЛ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╡реАрдПрдорд╕реАрдПрд╕ рдореЗрдВ рдЯреАрдПрд╕рд╕реА рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдпрд╛ рдЯреАрдПрд╕рд╕реА рдХреЛ рдХрдо рдХрд░рдХреЗ рд╣рд░ рдмрд╛рд░ рд╕реАрдкреАрдпреВрдЖрдИрдбреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдордп-рдЖрдзрд╛рд░рд┐рдд рд╣рдорд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдХрдИ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдПрдХ рдпрд╛ рджреЛ рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдХреЗ рднреАрддрд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рдмрд╛рд░ рдЬрд╛рд▓рд╕рд╛рдЬреА рддрдХрдиреАрдХ рдХреА рдЦреЛрдЬ рдХреА рдХрдард┐рдирд╛рдИ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдмреИрдЯрд▓рдлреЗрдИ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдФрд░ рд╕реБрдзрд╛рд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред рдЗрд╕ рдорд╛рдиреНрдпрддрд╛ рдкрджреНрдзрддрд┐ рдХреЗ рджреЛрд╖ рдХрд╛ рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд╕реАрдкреАрдпреВрдЖрдИрдбреА рд╡рд┐рд▓рдВрдм (рд░рдирдЯрд╛рдЗрдо) рд╢реАрдЯ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ 70-300 рдШрдбрд╝реА рдЪрдХреНрд░ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рддреАрд╕рд░реА рд╕рдорд╕реНрдпрд╛ SetThreadPriority рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдВрдбреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдЯреНрд░реАрдо рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдореВрд▓реНрдп рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдУрдПрд╕ рд╣рдореЗрд╢рд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд╣реАрдВ рд╕реБрдирддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдереНрд░реЗрдб рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ, рдФрд░ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд░реБрдХрд╛рд╡рдЯреЛрдВ рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧреАред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдиреНрдпрддрд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдЬрд╛рд▓рд╕рд╛рдЬреА рдХреЗ рд╕рдордп рдХреА рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХ рдЗрд╕ рдорд╛рдиреНрдпрддрд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╣рд░рд╛ рджреЗрддреА рд╣реИред рдЕрдЧрд░ рдмреИрдЯрд▓рдИ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рдЕрдиреБрднрд╛рдЧ рдХреБрдЫ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╕реБрдзрд╛рд░


рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдЖрд░ 8 рдХреЛ рдЙрдЪреНрдЪрддрдо рдЖрдИрдЖрд░рдХреНрдпреВрдПрд▓ рдореЗрдВ рдмрджрд▓рдХрд░ рдПрдХ рдзрд╛рдЧреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЪреЗрдХ рдХреЛ рдПрдХ рд╕реАрдкреАрдпреВ рдХреЛрд░ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ рднреА рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛ред рдПрдХ рдФрд░ рд╕реБрдзрд╛рд░: рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдЯреАрдПрд╕рд╕реА рдХреЗ рд╕рдорд╛рди рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕рд╛ рдЯрд╛рдЗрдорд░ рд╣реИ рдЬрд┐рд╕реЗ рдПрдкреАрдИрдЖрд░рдПрдл, рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдШрдбрд╝реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЯрд╛рдЗрдорд░ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдзреЛрдЦрд╛ рджреЗрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд╛рд╡рд░ рд╕реНрдЯреЗрдЯ C0 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЯреАрдПрд╕рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЖрдк рдПрд╕реАрдкреАрдЖрдИ, рдПрдЪрдкреАрдИрдЯреА, рдкреАрдЖрдИрдЯреА рдЯрд╛рдЗрдорд░, рдЬреАрдкреАрдпреВ рдЯрд╛рдЗрдорд░, рдПрдирдЯреАрдкреА рдЯрд╛рдЗрдорд░, рдпрд╛ рдкреАрдкреАрдИрдЖрд░рдПрдл рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдкреАрдИрдЖрд░рдПрдл рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЧрд┐рдирд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдЪрдбрдмреНрд▓реНрдпреВрдкреА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИред

рдиреАрдЪреЗ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 void battleye::take_time() { std::uint32_t cpuid_regs[4] = {}; _disable(); const auto aperf_pre = __readmsr(IA32_APERF_MSR) << 32; __cpuid(&cpuid_regs, 1); const auto aperf_post = __readmsr(IA32_APERF_MSR) << 32; const auto aperf_diff = aperf_post - aperf_pre; // CPUID IET ARRAY STORE // BATTLEYE REPORT TABLE STORE _enable(); } 

рдиреЛрдЯ: IET рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдиреБрджреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдкреАрдпреВрдЖрдИрдбреА рд░рдирдЯрд╛рдЗрдо рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВредрджреЛрдиреЛрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ IET рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реАрдкреАрдпреВрдЖрдИрдбреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдВрдмрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рд▓рдВрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ FYL2XP1 рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрдиреБрджреЗрд╢ рдЬреЛ CPUID рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдФрд╕рдд IET рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд╝рд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рд▓ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдордп рдордЬрд╝рдмреВрддреА рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди IET рдирд┐рд░реНрджреЗрд╢ CPUID рдФрд░ FYL2XP1 рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред APERF рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрдиреБрджреЗрд╢ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдШрдбрд╝реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдирд┐рд░реНрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдШрдбрд╝реА рдХреЗ рдбреЗрд▓реНрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрди рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП IET рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд╕рдд рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ CPUID рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ CPUID рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрдиреБрджреЗрд╢ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ,рдлрд┐рд░ рдпрд╣ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЖрднрд╛рд╕реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрдиреБрджреЗрд╢ рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВрдЖрдИрдбреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реА рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯреАрдПрд╕рд╕реА рдСрдлрд╕реЗрдЯ / рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдХреЛрд░ рдкрд░ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдЖрд░рдХреНрдпреВрдПрд▓ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реЛрдЧреА рдЕрдЧрд░ рдмреИрдЯрд▓рдЗрд╡реЗ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ, рдмреИрдЯрд▓рдИрдИ рджреЛ рдЕрдиреНрдп рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдорд╛рдиреНрдпрддрд╛ рд░реВрдЯреАрди рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред

Source: https://habr.com/ru/post/hi484420/


All Articles