рд╣реБрдХ рдЖрд╕рд╛рди рд╣реИрдВ (рднрд╛рдЧ 2)

рдЫрд╡рд┐

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╣реБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ (рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдХреНрдпреЛрдВ рд╣реИ, рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб)ред рд▓реЗрдЦ рдХреЛ рд╕рд░рд▓, рдиреНрдпреВрдирддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдлрдЯрдХрд╛рд░ рд╕реБрдиреА, "рдХреНрдпреЛрдВ Microsoft рдбреЗрдЯреНрд░реЙрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗ рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП $ 10,000 рдЦрд░реНрдЪ рд╣реЛрддреЗ рд╣реИрдВ?" рдЯрд┐рдкреНрдкрдгреА рдЙрдЪрд┐рдд рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд▓рдЧрднрдЧ 20 рдЧреБрдирд╛ рдХрдо рд▓рд╛рдЧрдд рдкрд░ рдПрдХ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдЪрд┐рдд рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╣реИ) - madCodeHook ред

рдЗрд╕ рд▓реЗрдЦ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдкрдврд╝реЗрдВред

madCodeHook


рдПрдХ рд╕рдореГрджреНрдз рдЕрддреАрдд рд╡рд╛рд▓рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдЗрд╕рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 2000 рд╡рд░реНрд╖ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдбреЗрд▓реНрдлреА рдХреЗ рддрд╣рдд рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред рдлрд┐рд░ рднреА, рдЕрдЧрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛: рд╕реА ++ рдХреЗ рд▓рд┐рдП рдПрд╕рдбреАрдХреЗ рдмрдирд╛рдпрд╛, 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ 9x рд╕реЗ 8.1 8.1 рддрдХ, рд╕рднреА рдирдП рдмрдирд╛рдП рдЧрдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╣реБрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдХрд╛рдлреА рд╕рдХреНрд░рд┐рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ (рдЕрджреНрдпрддрди рдФрд░ рдЕрдм рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдЖрддреЗ рд╣реИрдВ)ред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╡рд╛рдпрд░рд╕ рд▓реЗрдЦрдХреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдЕрдирд┐рдЪреНрдЫрд╛ рдХреЗ рдХрд╛рд░рдг, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рдЕрдкрдирд╛ рдореБрдлреНрдд рд╕рдВрд╕реНрдХрд░рдг рдЦреЛ рджрд┐рдпрд╛ , рд╣рд╛рд▓рд╛рдВрдХрд┐, 349 рдпреВрд░реЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреАрдорддреЗрдВ рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╣рдВрдЧрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдбрд┐рдЯреЙрд░реНрд╕ рдмрдирд╛рддреА рд╣реИрдВ , рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ mhook , рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ (рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ) EasyHook ред

рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рд╕реАрдорд╛рдПрдБ




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

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ


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

рдЕрднреНрдпрд╛рд╕


1. madCodeHook рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
2. рд╣рдо рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ (рдореИрдВ рд╡реАрдПрд╕ 2010 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдк рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ) рд╕рдорд╛рдзрд╛рдиред рдкрд╣рд▓рд╛ рд╣реБрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рджреВрд╕рд░рд╛ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдбреНрд░реЙрдк рдХрд░рдирд╛ рд╣реИред


4. рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд▓рд┐рдм рдлрд╛рдЗрд▓ рдХреЛ madCodeHook SDK рд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡реЗ C: \ Program Files (x86) \ madCollection \ madCodeHook \ Dll рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо madCHook - dynam.h рдФрд░ madCHook - рдбрд╛рдпрдирд╛рдорд┐рдХ - microsoft.lib рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ madCHook.h рдФрд░ madCHook.lib рдирд╛рдо рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

5. рд╣рдо рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд┐рдВрджреБ:

рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛрдб
#include "stdafx.h" #include <conio.h> #include "windows.h" #include "madCHook.h" #include <tlhelp32.h> HANDLE GetProcessByName(PCWSTR name) { DWORD pid = 0; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 process; ZeroMemory(&process, sizeof(process)); process.dwSize = sizeof(process); if (Process32First(snapshot, &process)) { do { if (_wcsicmp(process.szExeFile, name) == 0) { pid = process.th32ProcessID; break; } } while(Process32Next(snapshot, &process)); } CloseHandle(snapshot); if (pid != 0) return OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); return NULL; } int _tmain(int argc, _TCHAR* argv[]) { InjectLibraryW((DWORD)GetProcessByName(L"firefox.exe"), L"HookLib.dll"); _getch(); UninjectLibraryW((DWORD)GetProcessByName(L"firefox.exe"), L"HookLib.dll"); } 



рд╣реБрдХ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб
 #include "stdafx.h" #include "madCHook.h" LRESULT (WINAPI * TrueSendMessageW)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) = SendMessageW; __declspec(dllexport) LRESULT WINAPI MySendMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { if (Msg == WM_SETTEXT && wcsstr((LPCTSTR)lParam, L""NULL) return TrueSendMessageW(hWnd, Msg, wParam, (LPARAM)L", !"); return TrueSendMessageW(hWnd, Msg, wParam, lParam); } BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: HookAPI("User32.dll", "SendMessageW", MySendMessageW, (PVOID*) &TrueSendMessageW); } return TRUE; } 



рдЧрд┐рддреБрдм рдкрд░ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛

6. рд╕рдВрдХрд▓рди рдХрд░реЗрдВ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, mchEvaluation.exe рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдЗрдВрдЬреЗрдХреНрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реИрдмрд░ рдкрд░ рдЬрд╛рдПрдВред рдкрд░рд┐рдгрд╛рдо:



рдирд┐рд╖реНрдХрд░реНрд╖


рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, madCodeHook Microsoft Detours рдХреЛ рдереЛрдбрд╝рд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИ, рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИрдВред рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП madCodeHook рдХреЛ рдФрд░ рднреА рдХрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред MadCodeHook рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо-рд╡рд╛рдЗрдб рд╕реНрддрд░ (рд╕рднреА рдореМрдЬреВрджрд╛ рдФрд░ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ) рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ, рдбреЗрдЯрд░реНрд╕ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реЗрд╡рд╛ рдпрд╛ рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЧрддрд┐ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рд╕реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрд░реЗ рд╕рдорд╛рди рд▓рдЧ рд░рд╣реЗ рдереЗред madCodeHook Microsoft рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ "рдЙрджреНрдпрдо" рдХреА рднрд╛рд╡рдирд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдФрд░ рдмреБрд░рд╛ рджреЛрдиреЛрдВ рд╣реИ: рд▓реЗрдЦрдХ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдордВрдЪ рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "рдореИрдВ рд╡рд░реНрд╖ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдордп 6 рд╕рдкреНрддрд╛рд╣ рдХреА рдЫреБрдЯреНрдЯреА рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ" (рдЬреЛ рдмреБрд░рд╛)ред MadCodeHook рд╕рдореБрджрд╛рдп рдЙрдирдХреЗ рдордВрдЪ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, Microsoft Detours рд╕рдореБрджрд╛рдп рдХрд┐рд╕реА рднреА рддрд░рд╣ Stackoverflow, wasm.ru, MSDN рдордВрдЪреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрд┐рдЦрд░рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЕрдЦрдВрдбрддрд╛ рдХреА рднрд╛рд╡рдирд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, madCodeHook рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рднрд╛рд╡ рдЫреЛрдбрд╝рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles