рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдПрдореНрдмреЗрдб рдХрд░реЗрдВ

рдкрд╣рдЪрд╛рди


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

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

рд╣рдо Microsoft Visual Studio 2010 рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ C ++ рдореЗрдВ DLL рдЗрдВрдЬреЗрдХреНрдЯрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИред рдореИрдВрдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрдЧрд┐рдпрд░ рд░реЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ 2009, рдбреЗрд▓реНрдлреА рднрд╛рд╖рд╛ (рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕реНрдХрд▓) рдХреЛ рдЪреБрдирд╛ред

DLL Injection рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рд╕рд░рд▓ рд╣реИ:
1) рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╡рд░рдгрдХ рдХреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
2) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рдФрд░ рдЙрд╕ рдкрддреЗ рдкрд░ DLL рдореЗрдВ рдкрде рдХрд╛ рдмрд╛рдж рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬрд╣рд╛рдВ рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рд╣реБрдЖ
3) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрднрд╛рд╕реА рд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рдирдпрд╛ рдзрд╛рдЧрд╛ рдмрдирд╛рдирд╛ рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред




рдбреАрдПрд▓рдПрд▓ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдбреЗрд▓реНрдлреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



рдЕрдм DLL рдореЗрдВ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝реЗрдВ, рдЕрд░реНрдерд╛рддреН рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдФрд░ рдмрдЯрди:



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



рдЕрдм рд╣рдо DLL рдХреЗ рдлреЙрд░реНрдо рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдлреЙрд░реНрдо рдкрд░ рджреЛ рдмрдЯрди рд╣реИрдВред рдкрд╣рд▓реА рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ "рдорд╛рд░" рджреЗрдЧрд╛ (рдпрд╛рдиреА, рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдереНрд░реЗрдб рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ, рдмрджрд▓реЗ рдореЗрдВ, DLL рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ)ред рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ 25x25px рдХреЗ 10 рд╡рд░реНрдЧ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

procedure TForm1.Button1Click(Sender: TObject); var _curr_process:DWORD; p_handle: THANDLE; begin //    _curr_process:=GetCurrentProcessId(); p_handle:=OpenProcess(PROCESS_ALL_ACCESS,false,_curr_process); TerminateProcess(p_handle,4); end; var dw:DWORD; // PID   procedure drawGroup(h:HWND); var canvas:TBitMap; rect:TRect; x,y:integer; i: Integer; begin //  10  for i := 1 to 10 do begin canvas:=TBitMap.Create(); canvas.Canvas.Handle:=GetDC(h); //    randomize; canvas.Canvas.Brush.Color:=rgb(random(255),random(255),random(255)); GetWindowRect(h,rect); x:=random(rect.Right-rect.Left-25); y:=random(rect.Bottom-rect.Top-25); canvas.Canvas.Rectangle(x,y,x+25,y+25); end; end; function func(h:HWND):BOOL; stdcall; var pid:DWORD; begin GetWindowThreadProcessId(h,pid); //     ,     : if(pid=dw) then drawGroup(h); result:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin //     // (     ) dw:=GetCurrentProcessId(); EnumWindows(@func,0); //   end; 


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

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

DLL рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ DLL рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реА рд░рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдирд╛рдо рд╕реЗ рдкрд╛ рд╕рдХреЗред

рд╣рдо рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ (рдлрд╝рд╛рдЗрд▓-> рдирдпрд╛-> рдкреНрд░реЛрдЬреЗрдХреНрдЯ-> рд╡рд┐рдЬреБрдЕрд▓ C ++ -> рдЬрдирд░рд▓-> рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ)ред рд╕рднреА рд╡рд┐рдХрд╛рд╕ рдПрдХ рд╕рд╛рдл WinApi рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рджреГрд╢реНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВ: рдПрдХ рдлрд╝реЙрд░реНрдо, рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдбред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



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

DLL рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди WinApi рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
CreateToolHelp32SnapShot
Process32First
Process32Next

рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП:

OpenProcess
GetProcAddress
VirtualAllocEx
WriteProcessMemory
CreateRemoteThread

рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ "рд╕реНрдорд╛рд░реНрдЯ" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ :)

 MSG msg; while (GetMessage(&msg,NULL,0,0)) { // Button Click if(msg.hwnd==button && msg.message==WM_LBUTTONUP) { // Getting Process Name GetWindowText(edit_proc,buff,sizeof(buff)); strncpy(_p_name,buff,BUFF); // Getting DLL Name ZeroMemory(buff,sizeof(buff)); GetWindowText(edit_dll,buff,BUFF); strncpy(_dll_name,buff,BUFF); // Start Injection StartInjection(); } 


рдареАрдХ рд╣реИ, рдлрд┐рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЬрд╛рдПрдВ
рд╢реБрд░реВрдЖрдд ();
, рдЬреЛ рдЕрдкрдиреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

 int StartInjection() { // Searching of Process PROCESSENTRY32 pe; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(snapshot==INVALID_HANDLE_VALUE) { ShowMessage("SnapShot Failed."); return 0; } pe.dwSize = sizeof(PROCESSENTRY32); int curr = Process32First(snapshot,&pe); while(curr) { CharLowerBuff(pe.szExeFile,lstrlen(pe.szExeFile)); if(strstr(pe.szExeFile,_p_name)) {pid = pe.th32ProcessID; break;} curr = Process32Next(snapshot,&pe); } if(pid==NULL) { ShowMessage("Searching of process failed."); return 0; } bool result = Inject(); if(result==false) { ShowMessage("Injection failed."); return 0; } } 


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ
рдЗрдВрдЬреЗрдХреНрд╢рди ()
:

 // Injection bool Inject() { if(pid==NULL) return false; //    HANDLE process = OpenProcess(PROCESS_ALL_ACCESS,false,pid); if(process==NULL) return false; // ""       //  DLL      LPVOID fp = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA"); if(fp==NULL) return false; //     strlen(_dll_name)   //      . LPVOID alloc = (LPVOID)VirtualAllocEx(process,0,strlen(_dll_name), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if(alloc==NULL) return false; //    DLL   BOOL w = WriteProcessMemory(process,(LPVOID)alloc,_dll_name,strlen(_dll_name),0); if(w==NULL) return false; //  ""     //       DLL. HANDLE thread = CreateRemoteThread(process,0,0,(LPTHREAD_START_ROUTINE)fp,(LPVOID)alloc,0,0); if(thread==NULL) return false; CloseHandle(process); return true; } 


рдкреВрд░реНрдг рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЗрдВрдЬреЗрдХреНрдЯрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг:



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



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

рдХрд┐рдпрд╛


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

рд╕реМрднрд╛рдЧреНрдп рд╣реИ

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


All Articles