рдПрдХ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдВрдбреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг

рдЕрдзрд┐рдХрд╛рдВрд╢ Sysinternals рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддрдереНрдп рдереЗред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╢рд╛рдВрдд рд▓реЛрдЧ рдЕрдкрдиреЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╢рд╛рдВрдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

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

рдЖрдЗрдП рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред Ntdll.dll рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрд╣рд╛рд░ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЦреБрдж Win7 64 рдХреЗ рддрд╣рдд рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ 32-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдпрд╛ред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ:% SystemDisk% \ Windows \ System32 \ ntdll.dllред

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

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдПрдХ рдкрд╛рдпрд╛ рдЧрдпрд╛ - RtlComputeCrc32ред



рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрд╕рдВрддреБрд╖реНрдЯ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдк рдПрдЪрдбреАрд╕реНрдо рдпрд╛ W32Dasm рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдерд╛рди рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ pseudocode RtlComputeCrc32 рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛, рдХреГрдкрдпрд╛ рдЗрдбрд╛ рдбреАрдХреЙрдореНрдкрд┐рд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдлрдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ F5 рджрдмрд╛рдПрдВ рддреЛ рд╕рдВрдкрд╛рджрди-> рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╣реЗрдХреНрд╕-рд░реЗрдЬ рдбрд┐рдХрдореНрдкреЗрд▓рд░ рдЙрдкрд▓рдмреНрдз рд╣реИ)ред



рд╣рдореЗрдВ рдЕрднреА рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ! рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
1) ntdll рдореЗрдВ рдЕрдкрдирд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо;
2) рдЗрд╕реЗ рд╕рд╣реА рдкреЙрдЗрдВрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк;
3) рд╕рд╣реА рддрд░реНрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд╛ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд;

рдЖрдЗрдЯрдо 1-2 рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрджреНрдордХреЛрдб рд╕реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдЕрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕реЗ CRC32 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЫрджреНрдо рдХреЛрдб рд╕реЗ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдгреА a2 рдХреЗ рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ a3 рд╣реИ , рдФрд░ a1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╣реИред рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ RtlCrc32Table рдЯреЗрдмрд▓ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд░рд╛рдХреНрд╖рд╕реА рддрд╛рд▓рд┐рдХрд╛ рджрд┐рдЦрд╛рдПрдЧрд╛)ред Google CRC32 рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИред

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

GetModuleHandle () ntdll рд╣реИрдВрдбрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, GetProcAddress () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд╣реИред рд╣рдо RtlComputeCRC32 () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UndocFoo рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

#include <stdio.h> #include <windows.h> typedef INT (WINAPI *UndocFoo)(INT accumCRC32, const BYTE* buffer, UINT buflen); int main() { HMODULE hDLL = GetModuleHandle(TEXT("ntdll.dll")); if (hDLL == NULL) { puts("[-] Failed to find ntdll.dll\n"); return EXIT_FAILURE; } puts("[+] Got ntdll.dll handle\n"); UndocFoo ComputeCrc32 = (UndocFoo)GetProcAddress(hDLL, "RtlComputeCrc32"); if (ComputeCrc32 == NULL) { puts("[-] Failed to find RtlComputeCrc32\n"); return EXIT_FAILURE; } puts("[+] Found RtlComputeCrc32 address\n"); puts("[*] Calling RtlComputeCrc32...\n"); BYTE buffer[] = {0x01, 'a', 7}; INT iCRC32 = ComputeCrc32(INT(0), (BYTE*)buffer, 3); printf("[+] Computed CRC32 --> 0x%x\n\n", iCRC32); puts("Press any key to quit\n"); getchar(); return EXIT_SUCCESS; } 




рд╕рдлрд▓рддрд╛ред рдЖрдк рдХрд┐рд╕реА рднреА рдСрдирд▓рд╛рдЗрди рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдмрд╛рдЗрдЯреНрд╕ 016107 рдиреЗ CRC32 = 0x1c017c60 рджрд┐рдпрд╛ред



рдСрдирд▓рд╛рдЗрди рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдиреЗ рдПрдХ рд╣реА рдмрд╛рдд рджреА:

"

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

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


All Articles