рд╡рд┐рдВрдбреЛ рд╣реБрдХ рдкрдВрдЬреАрдХрд░рдг


рд╣реЛрдореНрд╕ ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрддрд╛рдУ, рдореЗрд░реЗ рджреЛрд╕реНрдд рд╡реЙрдЯрд╕рди, рдХреНрдпрд╛ рддреБрдордиреЗ рдХрднреА рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╣реБрдХ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ рдХреЛ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ?

рд╡рд╛рдЯрд╕рди ред рд╣рдореНрдо ... рдХреНрдпрд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рд┐рдп рд╣реЛрдореНрд╕ред
::UnhookWindowsHookEx( hhookMy); 

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

рдореЗрдВред рдпрд╣рд╛рдБ, рд╡рд╛рд╣! рдХреНрдпрд╛ рддреБрдо рдореБрдЭреЗ, рд╣реЛрдореНрд╕ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рддреЗ рд╣реЛ? рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 32 рд╣реИред Win32 рдореЗрдВ рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╣реА .Netред рдФрд░ рдЕрдЪрд╛рдирдХ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред

рдФрд░ CreateFile , рд╕рдВрдпреЛрдЧ рд╕реЗ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╣рд▓реЗ рди рд▓рд┐рдЦреЗрдВ? рдФрд░ CreateProcess , рд╕рдВрдпреЛрдЧ рд╕реЗ, рдирд╣реАрдВ ...

рдПрдХреНрд╕ рдирд╣реАрдВ, рд╡реЙрдЯрд╕рди, рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдордЬрд╛рдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред CreateFile рдФрд░ CreateProcess рд╣рдорд╛рд░рд╛ рдХрд░реНрдиреЗрд▓ 32 рд╣реИ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИред

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

рдореЗрдВред рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рд╣реИ?

рдПрдХреНрд╕ рд╣рд╛рдБ, рдЬрд╛рд╣рд┐рд░ рд╣реИред

рдореЗрдВред рд╢рд╛рдпрдж рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрднреА рднреА рдЙрдЪрд┐рдд рд╣реИред рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрдм рд╣реБрдХ рдбреАрдПрд▓рдПрд▓ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

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

рдореЗрдВред рдХреНрдпрд╛ рдЦреМрдл рд╣реИ!

рд▓реЗрдХрд┐рди рдПрдХ рдкрд▓ рд░реБрдХрд┐рдПред рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рд╣реБрдХ DLL рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рдпрд╛ рдЗрд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╣реАрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдлрд┐рд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ ... рдпрд╣ SetWindowsHookEx DLL рдкрддреЗ рдкрд░ SetWindowsHookEx , рдЬрд┐рд╕рдХреА рдлрд╝рд╛рдЗрд▓ рдкрде рдЕрдм DLL рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЛрдб рд░рд╣рддрд╛ рд╣реИред

рдЖрдк рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд╣реБрдХ рдмрдирд╛рдПрдЧрд╛ рдЬреЛ рдЧрд▓рдд DLL рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо SetWindowsHookEx рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛!

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

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, User32 рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрде рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬреЛ DLL рдХреЗ рдЙрд╕ рд╕рдордп рдерд╛ рдЬрдм рд╣реБрдХ рдкрд╣рд▓реА рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреВрд╕рд░реА рд░рдЪрдирд╛ рдореЗрдВ, рдЙрдирдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА DLL рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрддрд╛рд░рдиреЗ рдФрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореЗрдВред рд╣рдореНрдо ... рдФрд░ рдпрд╣ рд╕рдм рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ UnhookWindowsHookEx рдмрд╛рдж рдЖрдк рдмрд╕ рдПрдХ рд╕реЗрдХрдВрдб рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред рд╡рд┐рдВрдбреЛ рдореИрд╕реЗрдЬ рдХрд╛рдлреА рдмрд╛рд░ рдЖрддреЗ рд╣реИрдВред

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

рдореЗрдВред рдХреНрдпрд╛ рдХрд░реЗрдВ? рдЖрдк рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ DLL рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ?

(рд╣реЛрдореНрд╕ рдЪреБрдк рд╣реИ рдФрд░ рдзреВрдореНрд░рдкрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рдЯрд╕рди рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред)

рдореЗрдВред рд╣реЛрдореНрд╕, рдЖрдк рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рдХрд╛ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдПрдХреНрд╕ рд╣рдорд╛рд░реЗ рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдереНрд░реЗрдб рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдПрдВред рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдирд╛рдо рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рдЙрд╕ рдзрд╛рдЧреЗ рдХреА рдЖрдИрдбреА рдЗрдВрдЧрд┐рдд рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 using namespace std; namespace k = Kernel32; ... if( nullptr == tls_plistiterHookedThreadFileStreamHandle) //      . { _listHookedThreadFileStreamHandles.push_front( k::CreateFile( k::FormatMessage( L"%1:%2!4u! %3!4u!", sHookedThreadListFilePath, k::GetCurrentThreadId(), k::GetCurrentProcessId() ), GENERIC_WRITE, FILE_SHARE_READ, CREATE_ALWAYS, FILE_FLAG_DELETE_ON_CLOSE )); tls_plistiterHookedThreadFileStreamHandle = new list< HANDLE>::iterator( _listHookedThreadFileStreamHandles.begin()); } 

рддрдм рдореБрдЦреНрдп EXE рдЗрди рдереНрд░реЗрдбреНрд╕ ( FindNextStream ) рдкрд░ FindNextStream рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП WM_NULL рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ рдЬрд┐рд╕реЗ User32 рдиреЗ рд╣рдорд╛рд░реЗ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, User32 DLL рдХреЛ рдЕрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ред

DLL, рдЕрдирд▓реЛрдбрд┐рдВрдЧ, рд╕реВрдЪреА рдХреЗ рд╕рднреА _listHookedThreadFileStreamHandles рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рдирджрдВрдб рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдорд╛рд░реА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рд╕рдлрд▓рддрд╛ред

рдореЗрдВред рд╣реЛрдореНрд╕, рдЗрддрдиреА рдкрд░реЗрд╢рд╛рдиреА рдХреНрдпреЛрдВ? рддрд░реНрдХ рдХреЗ рд╕рд╛рде SendMessage рд╣реИ HWND_BROADCAST ред

рдПрдХреНрд╕ SendMessage рдЙрди рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдХрддрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╢рд╛рдпрдж рдпрд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ред

(рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИред) рд╢реНрд░реАрдорддреА рд╣рдбрд╕рди, рдЪрд╛рдп рдкрд░реЛрд╕реЗрдВ, рдХреГрдкрдпрд╛!

рдЕрдЧрд▓реЗ рджрд┐рди

рдореЗрдВред рд╣реЛрдореНрд╕, рдПрдХ рд╕рдЬреНрдЬрди рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ SendMessage( HWND_BROADCAST) рдХрдо рд╕реЗ рдХрдо рдЙрдирдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХреНрд╕ рд╣рдореНрдоред

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


All Articles