рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдмрдВрдзрди рдореЛрдб рдХреЛрдб рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдпрд╣ рдЖрд▓реЗрдЦ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдмрдВрдзрди рдореЛрдб (SMM) рдореЛрдб рдореЗрдВ рдЯреНрд░реЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Intel рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░реЗрд╕ (Intel PT) рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдпрд╣ рдХрд╛рдо рд╕рдорд░ рдСрдл рд╣реИрдХ 2019 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред @sysenter_eip рдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ ред


рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдг рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ @d_olex , @aionescu )ред рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорджрд░рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрд╕рдПрдордПрдо рдореЛрдб рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдордЧреНрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдПрд╕рдПрдордПрдо рдХреЗ рдХрд╛рдо рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред


рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдмрдВрдзрди рдореЛрдб


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


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


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


рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░реЗрд╕


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


рдЗрдВрдЯреЗрд▓ (рдмреНрд░реЙрдбрд╡реЗрд▓) рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдкрд╛рдВрдЪрд╡реАрдВ рдкреАрдврд╝реА рдиреЗ рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░реЗрд╕ рдЬреИрд╕реА рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рджреБрдирд┐рдпрд╛ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ? рдЗрдВрдЯреЗрд▓ рдкреАрдЯреА рдЖрдкрдХреЛ рдбреАрдмрдЧ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░реНрдг рдкреНрд░рд╡рд╛рд╣ (рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣) рдХреЛ рдиреНрдпреВрдирддрдо рдУрд╡рд░рд╣реЗрдб (<5%) рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреНрд░реЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп рд╕рдордп рдЯрд┐рдХрдЯреЛрдВ рдХреЗ рдХрд╛рд░рдг "рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐" рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдЗрдВрдЯреЗрд▓ рдкреАрдЯреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдЦреЛрдЬ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред


рдЖрдЬ, рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдЯреНрд░реЗрд╕рд┐рдВрдЧ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрд░реНрдиреЗрд▓-рд╕реНрддрд░реАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВред рдЙрдкрдХрд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЗрдВрдЯреЗрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ AFL рдлрд╝реНрдпреВрдЬрд╝рд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛ Intel PT рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ рд╡рд╣ PTfuzzer рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рд╛рд▓ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, iptanalyzer рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ред


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


рдХрд╛рдо рдХреА рддреИрдпрд╛рд░реА


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


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


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрд╕рдПрдордЖрд░рдПрдПрдо (рд░реИрдо рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдЬрд┐рд╕рдореЗрдВ рдПрд╕рдПрдордПрдо рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рд╕реНрдерд┐рдд рд╣реИ) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рд░реИрдо рдХреНрд╖реЗрддреНрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рдбреАрдПрдордП рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ:


  1. рдПрд╕рдПрдордПрдо рдореЗрдВ рдПрдХ рдЬреНрдЮрд╛рдд рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╢реЛрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЗрд╕рд╕реЗ рдЖрд░ / рдбрдмреНрд▓реНрдпреВ рдЖрджрд┐рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдПрд╕рдПрдордЖрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдЦреБрдж рдХреЛ рднреЗрджреНрдпрддрд╛; рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрд╕рдПрдордПрдо рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдХреЛрдб рд╣реИ рдЬреЛ рдУрдИрдПрдо рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВ), рд╕рд╛рде рд╣реА рдПрдХ рдХрдордЬреЛрд░ рдордВрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдПрд╕рдПрдордЖрд░рдПрдПрдо рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдирд╛ / рдЪрд▓рд╛рдирд╛);
  2. рдпреВрдИрдПрдлрдЖрдИ рдЫрд╡рд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдирд╛ рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ - рдПрдХ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдорджрд░рдмреЛрд░реНрдб рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрдВрдЯреЗрд▓ рдмреВрдЯ рдЧрд╛рд░реНрдб рдЕрдХреНрд╖рдо рд╣реИ рдпрд╛ рдРрд╕реА рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


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



рдЪрд┐рддреНрд░ 1. рдЯреЗрд╕реНрдЯ рдмреЗрдВрдЪ


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



рдЪрд┐рддреНрд░рд╛ 2. рдПрд╕рдкреАрдЖрдИ-рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдЪрд┐рдк


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


рдЖрдк SMRAM рдбрдВрдк рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


$ python SmmBackdoor.py -d


рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, SMRAM_dump_cb000000_cb7fffff.bin рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрддрдорд╛рди SMRAM рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓реЗ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдорд╛рди cb000000 рдФрд░ cb7fffff, рдХреНрд░рдорд╢рдГ, SMRAM рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рд╣реИрдВред


рдбрдВрдк SMRAM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


SMRAM рдбрдВрдк рдХреЛ рдПрдХ disassembler рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ smram_parse.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓ рджреЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрд╕рдПрдордЖрдИ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкрддреЗ рд╣реЛрдВрдЧреЗред рдпреЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдПрд╕рдПрдордЖрдИ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ CPU рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИред



рдЪрд┐рддреНрд░рд╛ 3. smram_parse рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ


рдЖрдЗрдП рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВред рдЪреВрдВрдХрд┐ рдПрд╕рдПрдордПрдо 16-рдмрд┐рдЯ рд░рд┐рдпрд▓ рдореЛрдб (рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ 4 рдЬреАрдмреА рд░реИрдо рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рдореЗрдВ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдХреЛрдб рдХрд░рддреА рд╣реИ рд╡рд╣ 64-рдмрд┐рдЯ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛрддреА рд╣реИред рдЙрд╕реА рд╕рдордп, рд╕рдВрдкреВрд░реНрдг SMRAM рд░рд╛рдЗрдЯ рдФрд░ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯ рд░рд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?)ред


рд╣рдо 16-рдмрд┐рдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ 64-рдмрд┐рдЯ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рджрдо рдкрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо SMI рдкреНрд░рдмрдВрдзрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рджреЗрдВрдЧреЗ (рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрдордПрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ рдпрд╛ рдХреНрдпрд╛ рдШрдЯрдирд╛ рд╣реБрдИ рдереА)ред



рдЪрд┐рддреНрд░рд╛ 4. рд╣реБрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рдореЗрдВрдЯ


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


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


рдПрдХ SMI рдкреНрд░рдмрдВрдзрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛


рд╣рдо рдЕрдкрдиреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрд╕рдПрдордПрдо рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрдЯреЗрд▓ рдкреАрдЯреА рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЗрдВрдЯреЗрд▓ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдПрд╕рдПрдордмреА рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рдордп рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рд╛рдЬреНрдп (рдПрд╕рдПрдордПрдо рд╕реЗрд╡ рд╕реНрдЯреЗрдЯ рдПрд░рд┐рдпрд╛) рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдПрд╕рдПрдордмреА рдмреЗрд╕ (MSR 0x9E) рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИред



рдЪрд┐рддреНрд░ 5. SMBASE рд▓реЗрдЖрдЙрдЯ


рд╣рдо рдЗрдВрдЯреЗрд▓ рдкреАрдЯреА рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рд╕реЗрд╡ рд╕реНрдЯреЗрдЯ рдПрд╕рдПрдордПрдо рдореЗрдВ, MSR рд░рдЬрд┐рд╕реНрдЯрд░ IA32_RTIT_CTL рдХрд╛ рдорд╛рди, рдЬреЛ Intel PT рдЕрдиреБрд░реЗрдЦрдг рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдВрдЯреЗрд▓ рдореИрдиреБрдЕрд▓ рдпрд╣ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрдордПрдо рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рдордп рдкреНрд░реЛрд╕реЗрд╕рд░ IA32_RTIT_CTL.TraceEn рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ (рдЪрд╛рд╣реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕рдХреНрд╖рдо рд╣реИ, рд╢реВрдиреНрдп рдмрд┐рдЯ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕реЗрд╡ рд╕реНрдЯреЗрдЯ рдПрд╕рдПрдордПрдо рдХреЛ рджреЛ рдмрд╛рд░ рдбрдВрдк рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдХреНрд╖рдо рдХрд┐рдП рдмрд┐рдирд╛ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ред


рд╣рдордиреЗ рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (pid 1337 ) рдкрд░ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WinIPT рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЯреНрд░реЗрд╕ рдмрдлрд░ рдХреЛ 2 ^ 12 (4096) рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ SmmBackdoor.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ (рддрд░реНрдХ 0 рдПрдХ рдзреНрд╡рдЬ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдХреНрдпреЛрдВрдХрд┐ SMM рдореЗрдВ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрдкрдиреА рдЯреНрд░реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ)ред


$ ipttool.exe --start 1337 12 0


SMRAM рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ, рд╣рдордиреЗ SMM рд╕рд╣реЗрдЬреЗрдВ рд░рд╛рдЬреНрдп рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ IA32_RTIT_CTL рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕реЗ рдСрдлрд╕реЗрдЯ SMBASE + 0xFE3C рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред IA32_RTIT_CTL.TraceEn рдмрд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ SMM рдХреЗ рдЕрдВрджрд░ Intel PT рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреА рдореБрдЦреНрдп рд╕реНрдерд┐рддрд┐ рд╣реИред рдЗрд╕ рдСрдлрд╕реЗрдЯ рдкрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдЗрдВрдЯреЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЪрд┐рддреНрд░ 6. рдлрд╝реАрд▓реНрдб рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛


рд╢реЗрд▓рдХреЛрдб рд▓рд┐рдЦрдирд╛


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


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


  1. CPL = 0 рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЗрдЦрдг рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  2. CPL> 0 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЗрдЦрдг рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡реИрдХрд▓реНрдкрд┐рдХ)ред
  3. рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЖрдИрдкреА рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  4. IA32_RTIT_STATUS.PacketByteCnt рд░реАрд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  5. CR3 рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЕрдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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


рдиреАрдЪреЗ рд╡рд╣ рд╢реЗрд▓рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:


  sub rsp, 0x18 ; this will align stack at 16 byte boundary (in case SMM ; code uses align dependent instructions) mov qword ptr ss:[rsp+0x10], rcx ; need to save rcx for SMI_Dispatcher mov ecx, 0x9E ; MSR_IA32_SMBASE rdmsr test byte ptr ds:[rax+0xFE3C], 0x1 ; Save State area contains saved ; IA32_RTIT_CTL.TraceEn je short @NoTrace call @Trace_Enable mov rcx, qword ptr ss:[rsp+0x10] ; SMI_Dispatcher is __fastcall ; (first argument in rcx) mov eax, 0xCB7DDAA4 ; original SMI_Dispatcher !!!!!!!!!!!!!!!!!!!!! call rax call @Trace_Disable add rsp, 0x18 ret @NoTrace: mov rcx, qword ptr ss:[rsp+0x10] ; SMI_Dispatcher is __fastcall mov eax, 0xCB7DDAA4 ; original SMI_Dispatcher !!!!!!!!!!!!!!!!!!!!! call rax add rsp, 0x18 ret @Trace_Disable: mov ecx, 0x570 ; IA32_RTIT_CTL rdmsr mov rax, qword ptr ss:[rsp+0x10] ; restore IA32_RTIT_STATUS wrmsr mov ecx, 0x571 ; IA32_RTIT_STATUS rdmsr mov rax, qword ptr ss:[rsp+0x8] ; restore IA32_RTIT_CTL wrmsr ret @Trace_Enable: mov ecx, 0x571 ; IA32_RTIT_STATUS rdmsr mov qword ptr ss:[rsp+0x8], rax ; save IA32_RTIT_STATUS and edx, 0xFFFF0000 ; IA32_RTIT_STATUS.PacketByteCnt = 0 wrmsr mov ecx, 0x570 ; IA32_RTIT_CTL rdmsr mov qword ptr ss:[rsp+0x10], rax ; save IA32_RTIT_CTL and eax, 0xFFFFFFBF ; IA32_RTIT_CTL.CR3Filter = 0 or eax, 0x5 ; IA32_RTIT_CTL.OS = 1; IA32_RTIT_CTL.User = 1; and edx, 0xFFFF0000 ; IA32_RTIT_CTL.ADDRx_CFG = 0 wrmsr ret 

рдЗрд╕ рдХреЛрдб рдХреЛ SMRAM рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ SMI рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд╕рдВрдХреНрд░рдордг рд╣рдорд╛рд░реЗ рдХреЛрдб рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм SmmBackdoor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


SMI рдкреНрд░рдмрдВрдзрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдиреЗ рд╣рдореЗрдВ SMM рд╕реЗ рдкрд╣рд▓рд╛ рдХреЛрдб рдЯреНрд░реЗрд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдирд┐рдореНрди рдХрдорд╛рдВрдб WinIPT рд╕реЗ рдлрд╛рдЗрд▓ рдХреЛ рдЯреНрд░реЗрд╕ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреА рд╣реИ:


$ ipttool.exe --trace 1337 trace_file_name


рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЕрдиреБрд░реЗрдЦрдг рдЕрдХреНрд╖рдо рдХрд░рдирд╛:


$ ipttool.exe --stop 1337


рдЖрдк рдЯрдХрдЯрдХреА рд╕реЗ рдбрдореНрдкреНрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реЗрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


$ ptdump.exe --no-pad ./examples/trace_smm_handler_33 > ./examples/trace_smm_handler_33_pt_dump.txt


рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг:



рдЪрд┐рддреНрд░рд╛ 7. рдкрд╣рд▓рд╛ рдПрд╕рдПрдордПрдо рдЕрдиреБрджреЗрд╢ рдкрде


рд╣рдо рдХреБрдЫ рдкрддреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣реИред


рдЕрдзрд┐рдХ рдкрдардиреАрдп рд░реВрдк рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ ptxed рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ (рдкрд░рд┐рд╡рд╛рдж рд╕реЗ) рдЬреЛ рдЯреНрд░реЗрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдбрд╛рдВрддрд░рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓реЙрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╣рдореЗрдВ рдПрд╕рдПрдордЖрд░рдПрдПрдо рдореЗрдореЛрд░реА рдбрдВрдк рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдкреАрдЯреА рд▓реЙрдЧ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВред


$ ptxed.exe --pt tracesmm_12 --raw SMRAM_dump_cb000000_cb7fffff.bin:0xcb000000 > tracesmm_12_ptasm



рдЪрд┐рддреНрд░рд╛ 8. рдЖрдИрдкреАрдмреА рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓рд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ


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


рдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


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


рдХреЛрдИ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ ptxed рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдХрд╡рд░реЗрдЬ рдлрд╝рд╛рдЗрд▓ рднреА рдЙрддреНрдкрдиреНрди рдХрд░реЗред рдкреИрдЪреЗрдб ptxed рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред


Ptxed рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, SMRAM_dump_cb000000_cb7fffff.bin.log рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреНрд░рдХреЛрд╡ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд╡рд░реЗрдЬ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред


рдиреЛрдЯ: рдкрд╣рд▓реЗ PSB рдкрд░ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдереЛрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреАрдПрд╕рдИ рдкреАрдЬреАрдИ рд╕реЗ рдкрд╣рд▓реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ (рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рдЙрд╕ рдкрд░ ptxed рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреИрдЪ рдмрдирд╛рдпрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЦреБрдж ptxed рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рд╣рдо IA32_RTIT_STATUS.PacketByteCnt рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред



рдЪрд┐рддреНрд░ 9. рдПрдХ рдкреИрдЪ рдЬреЛ рдЖрдкрдХреЛ PGE рдХреЗ рдареАрдХ рд╕рд╛рдордиреЗ рд╕реНрдерд┐рдд PSB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ


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



рдЪрд┐рддреНрд░ 10. рдХреЛрдб рдХрд╡рд░реЗрдЬ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЖрдИрдбреАрдП рдкреНрд░реЛ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдкреНрд▓рдЧрдЗрди


рдиреЛрдЯ: рдкреНрд░рдХрд╛рд╢рд╕реНрддрдВрдн рдкреНрд▓рдЧрдЗрди рдЕрдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ)ред рд╣рдордиреЗ рдЗрд╕ "рд╕рдорд╕реНрдпрд╛" рдХреЛ get_instructions_slice рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП \ lighthouse \ metadata.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЦреЛрдЬрд╛, рдЬрд╣рд╛рдБ рдпрд╣ рдЙрд╕ рдкрддреЗ рдХреЗ рд▓рд┐рдП рднреА 0 рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдлрд╝рдВрдХреНрд╢рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд▓рдЧрдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рд░реАрдирд╛рд▓реАрдЬрд╝ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рдЖрдИрдбреАрдмреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд▓рдЧрдЗрди рдирдпрд╛ рдХреЛрдб рджреЗрдЦ рдкрд╛рдПрдЧрд╛ рдФрд░ рдЙрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ SMRAM рдбрдВрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдЬреЛ рдкрд╣рд▓реЗ рдмреВрдЯ рдкрд░ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдб рд╕реЗ рдмрдирд╛ рд╣реИ), рд╣рдордиреЗ рд▓рд╛рдЗрдЯрд╣рд╛рдЙрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирдП рдХреЛрдб рдХреЛ рддреЗрдЬреА рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХреЗрдВред



рдЪрд┐рддреНрд░рд╛ 11. рдирдП рдХреЛрдб рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛


рд▓рд┐рдирдХреНрд╕ рд╕рдорд░реНрдерди


рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдВрдбреЛрдЬ 10 x64 рдкрд░ рдХрд┐рдП рдЧрдП рдереЗ (рд╣рдореЗрдВ ipt.sys рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдЕрдХреНрдЯреВрдмрд░ рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдЕрдкрдбреЗрдЯ 2018 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рдереА), рдЖрдЗрдП рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рддреЗ рд╣реИрдВред


  • рдПрдХ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдкрд░рдлреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореЛрдб рдореЗрдВ рдХреЛрдб рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕рд╣рд┐рдд рдПрдХ рд╣реА WinIPT (ipt.sys) рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдЪреВрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ SMM рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо CHIPSEC рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдкреИрдЪ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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


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


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


рд╕рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрдкрдХрд░рдг рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ GitHub рдкрд░ рднрдВрдбрд╛рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

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


All Articles