рд╡рд┐рдВрдбреЛрдЬ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реБрд╡рд┐рдзрд╛: рд╕рдмрд╕реЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣рдорд▓реЗ рдХреА рд╕рддрд╣

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


рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА


рд╡рд┐рдВрдбреЛрдЬ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реБрд╡рд┐рдзрд╛ (WNF) рдХреНрдпрд╛ рд╣реИ


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


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


рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрдВрддреНрд░ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:


  • рд╕реНрдерд╛рдпреА рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд╕реВрдЪрдирд╛рдПрдВ
  • рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдиреАрд░рд╕рддрд╛ рд╕реЗ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИ
  • рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдкреЗрд▓реЛрдб рдмрдлрд░ (4 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рддрдХ)
  • рдереНрд░реЗрдб-рдкреВрд▓ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЙрдбрд▓ рд╕рдореВрд╣-рдЖрдзрд╛рд░рд┐рдд рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд╕рд╛рде
  • рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢-рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдЬреЛ рдорд╛рдирдХ рдбреАрдПрд╕реАрдПрд▓ / рдПрд╕рдПрд╕реАрдПрд▓ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ


рдХреНрдпреЛрдВ WNF рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛


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


рд╣рдореЗрдВ рдпрд╣ рднреА рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдСрдЯреЛрдЪреЙрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЙрд╕ рдШрдЯрдирд╛ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди: рдиреАрдВрдж рдХреЗ рд╕рд╛рде рдПрдХ рд▓реВрдк рдореЗрдВ рдмреИрдареЛ (), рдПрдХ рдШрдЯрдирд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЬрдм рдШрдЯрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред


рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рд╕рднреА рд╡рд┐рд╡рд░рдг рдмрдВрдж рд╣реЛ рдЧрдП рд╣реИрдВред рдФрд░ рдЬрдм рд╡рд╕реНрддреБ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред рддреЛ рдпрд╣ рдЖрдпреЛрдЬрди рдХреМрди рдХрд░реЗрдЧрд╛?


WNF рдХреЗ рдмрд┐рдирд╛, рд╕рдорд╛рдзрд╛рди рдХрд┐рд╕реА рднреА рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдШрдЯрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OS рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ Autochk рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдХреА рддрд░рд╣ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕ рдШрдЯрдирд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред



рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл


рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдПрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЪрд╛рд▓ рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдХреЛрдбрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рдореЗрдВ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг , рдПрдХ рдЬреАрд╡рдирдХрд╛рд▓ , рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ , рдПрдХ рдбреЗрдЯрд╛ рджреГрдврд╝рддрд╛ рдЭрдВрдбрд╛ рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╣реИ ред


typedef struct _WNF_STATE_NAME_INTERNAL { ULONG64 Version:4; ULONG64 NameLifetime:2; ULONG64 DataScope:4; ULONG64 PermanentData:1; ULONG64 Unique:53; } WNF_STATE_NAME_INTERNAL, *PWNF_STATE_NAME_INTERNAL; 

рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рддрднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдЬрдм рд╣рдо рдПрдХ рдЬрд╛рджреВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ:


 #define WNF_STATE_KEY 0x41C64E6DA3BC0074 


рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓


WNF рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо (WNF_STATE_NAME_LIFETIME) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


  • рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)
  • рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ (рд╕реНрдерд╛рдпреА)
  • рд╕реНрдерд┐рд░ (рд▓рдЧрд╛рддрд╛рд░)
  • рдЕрдирдВрддрд┐рдо (рдЕрд╕реНрдерд╛рдпреА)

рдкрд╣рд▓реЗ рддреАрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреА:


  • рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдирд╛рдо HKLM \ SYSTEM \ CurrentControlSet \ Control \ Notifications рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ
  • рд▓рдЧрд╛рддрд╛рд░ рдирд╛рдо HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Notifications рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ
  • рд▓рдЧрд╛рддрд╛рд░ рдирд╛рдо HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ VolatileNotifications рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ

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



рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрдХреЛрдк


рдбреЗрдЯрд╛ рд╕реНрдХреЛрдк WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдкрд╣рд▓реА рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рд╣реИред рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рдХрд╛ рджрд╛рдпрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


  • рдкреНрд░рдгрд╛рд▓реА
  • рдХрд╛рд░
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛

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


рд╕реНрдХреЛрдк "рд╕рд┐рд╕реНрдЯрдо" рдФрд░ рд╕реНрдХреЛрдк "рдорд╢реАрди" рдЧреНрд▓реЛрдмрд▓ рд╕реНрдХреЛрдк рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ (рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╡реИрд╢реНрд╡рд┐рдХ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдХрд╛ рджрд╛рдпрд░рд╛ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рд╕рддреНрд░ рдЖрдИрдбреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдИрдбреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рджрд╛рдпрд░рд╛ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ SID рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред EPROCESS рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рдкреНрд░реЛрд╕реЗрд╕ рд╕реНрдХреЛрдк рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред



рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп 51-рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдирдХреЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдореЗрдВ 4-рдЪрд░рд┐рддреНрд░ рд╡рд╛рд▓рд╛ рдкрд╛рд░рд┐рд╡рд╛рд░рд┐рдХ рдЯреИрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рд╢реЗрд╖ 21 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд╛рдпреА рдирд╛рдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореВрд▓реНрдп "SequenceNumber" рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдирд╛рдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ (рдкреНрд░рддрд┐-рд╕рд╛рдЗрд▓реЛ) рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ PspHostSiloGlobals-> WnfSiloState рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред


Microsoft рдХреЗ рдЕрдВрджрд░, рдкреНрд░рддреНрдпреЗрдХ WNF рдирд╛рдо рдореЗрдВ рдПрдХ "рджреЛрд╕реНрддрд╛рдирд╛" рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЗрд╕реЗ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХ nt! WNF_BOOT_DIRTY_SHUTDOWN, рдЬрд┐рд╕рдХрд╛ рдорд╛рди 0x1589012fa3bc0875 рд╣реИред рдЬрд╛рджреВ рдирд┐рд░рдВрддрд░ WNF_STATE_KEY рдХреЗ рд╕рд╛рде XOR рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ 0x544f4f4200000801 рдХрд╛ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:


 BOOT1, Well-Known Lifetime, System Scope, Version 1 


WNF рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓


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



WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ


рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдирд╛рдореЛрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ OS рдЪрд▓ рд░рд╣рд╛ рд╣реИ:


 NTSTATUS ZwCreateWnfStateName ( _Out_ PWNF_STATE_NAME StateName, _In_ WNF_STATE_NAME_LIFETIME NameLifetime, _In_ WNF_DATA_SCOPE DataScope, _In_ BOOLEAN PersistData, _In_opt_ PCWNF_TYPE_ID TypeId, //      _In_ ULONG MaximumStateSize, //   4-  _In_ PSECURITY_DESCRIPTOR SecurityDescriptor // **  ); 

рдПрдХ рд╕рдордорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓ ZwDeleteWnfStateName рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкрдВрдЬреАрдХреГрдд рд░рд╛рдЬреНрдп рдирд╛рдо (рдлрд┐рд░ рд╕реЗ, рдкреНрд░рд╕рд┐рджреНрдз рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред



WNF рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ


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


 NTSTATUS ZwUpdateWnfStateData ( _In_ PCWNF_STATE_NAME StateName, _In_reads_bytes_opt_(Length) const VOID* Buffer, _In_opt_ ULONG Length, //   ,   MaximumSize,    _In_opt_ PCWNF_TYPE_ID TypeId, //      _In_opt_ const PVOID ExplicitScope, //  , SID ,  (ID)  _In_ WNF_CHANGE_STAMP MatchingChangeStamp, //     _In_ LOGICAL CheckStamp //         ); 

WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ (рд╕рд╛рдл) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ZwDeleteWnfStateData рдПрдХ рд╕рдордорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓ рд╣реИред



WNF рд╕реНрдЯреЗрдЯрд╕ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИрдВ):


 NTSTATUS ZwQueryWnfStateData ( _In_ PCWNF_STATE_NAME StateName, _In_opt_ PCWNF_TYPE_ID TypeId, _In_opt_ const VOID* ExplicitScope, _Out_ PWNF_CHANGE_STAMP ChangeStamp, _Out_writes_bytes_to_opt_(*BufferSize, *BufferSize) PVOID Buffer, _Inout_ PULONG BufferSize //   0,      ); 

рдЕрд╕рд▓реА рддрд╛рдХрдд рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди рдФрд░ рдХреНрд╡реЗрд░реА API рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрдВрдЬреАрдХреГрдд WNF рд░рд╛рдЬреНрдп рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрджрд┐ рдирд╛рдо рдЕрд╕реНрдерд╛рдпреА рдирд╣реАрдВ рд╣реИ (рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ), рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдирд╛рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!



WNF рд╕реВрдЪрдирд╛рдПрдВ


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


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ ZwSetWnfProcessNotificationEvent рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдШрдЯрдирд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рддрдм рдЖрдкрдХреЛ ZwSubscribeWnfStateChange рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдорд╛рд╕реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдШрдЯрдирд╛рдПрдБ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:


  • рдбреЗрдЯрд╛ рд╕реВрдЪрдирд╛рдПрдВ:
    • 0x01 - рдбреЗрдЯрд╛ рдЙрдкрд╕реНрдерд┐рддрд┐
    • 0x10 - рдирд╛рдо рд╡рд┐рдирд╛рд╢
  • рдореЗрдЯрд╛ рдореЗрдЯрд╛рдиреЛрдЯрд╛рдЗрдЬрд╝реЗрд╢рди
    • 0x02 - рдбреЗрдЯрд╛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдбреЗрдЯрд╛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░)
    • 0x04 - рдореЗрдЯрд╛ рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдореЗрдЯрд╛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░)
    • 0x08 - рдбреЗрдЯрд╛ рд╕реВрдЪрдирд╛ рдФрд░ рдореЗрдЯрд╛-рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдЬреЗрдиреЗрд░рд┐рдХ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░)

рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрд╕ рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рдереАред рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдИрд╡реЗрдВрдЯ рд╕рд┐рдЧреНрдирд▓ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ ZwGetCompleteWnfStateSubscription рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ WNF_DELIVERY_DESCRIPTOR рджреЗрддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдЗрди рдирд┐рдореНрди-рд╕реНрддрд░реАрдп API рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЧреИрдмреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж): рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдЬреАрдХреГрдд рдШрдЯрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред



рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб API (ntdll)


рдЬрдм рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЪреАрдЬреЗрдВ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП ntdll.dll рд╕реЗ rtl рдкрд░рдд рдПрдХ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ:


 NTSTATUS RtlSubscribeWnfStateChangeNotification ( _Outptr_ PWNF_USER_SUBSCRIPTION* Subscription, _In_ WNF_STATE_NAME StateName, _In_ WNF_CHANGE_STAMP ChangeStamp, _In_ PWNF_USER_CALLBACK Callback, _In_opt_ PVOID CallbackContext, _In_opt_ PCWNF_TYPE_ID TypeId, _In_opt_ ULONG SerializationGroup, _In_opt_ ULONG Unknown ); 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдмрд╕ рдПрдХ ntdll.dll- рдЪрд╛рд▓рд┐рдд рдИрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ, WNF_DELIVERY_DESCRIPTOR рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрд▓рдмреИрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 typedef NTSTATUS (*PWNF_USER_CALLBACK) ( _In_ WNF_STATE_NAME StateName, _In_ WNF_CHANGE_STAMP ChangeStamp, _In_opt_ PWNF_TYPE_ID TypeId, _In_opt_ PVOID CallbackContext, _In_ PVOID Buffer, _In_ ULONG BufferSize); 

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



рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ API (рдкреВрд░реНрд╡)


WNF рдХрд░реНрдиреЗрд▓ рдореЛрдб рдХреЛрдб рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ): рджреЛрдиреЛрдВ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рд░рдирдЯрд╛рдЗрдо (EX рд▓реЗрдпрд░) рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп API рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред


ExSubscribeWnfStateChange рдлрд╝рдВрдХреНрд╢рди рд░рд╛рдЬреНрдп рдирд╛рдо, рдкреНрд░рдХрд╛рд░ рдорд╛рд╕реНрдХ рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди + рд╕рдВрджрд░реНрдн рдХреЗ рдкрддреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рд╡рд░рдгрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рдХреНрд╖реНрдп рдирд╛рдо, рдИрд╡реЗрдВрдЯ рдорд╛рд╕реНрдХ, рдкрд░рд┐рд╡рд░реНрддрди рд▓реЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрдлрд░ рдпрд╛ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдирд╣реАрдВред


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


рдХрд░реНрдиреЗрд▓ рдореЛрдб рд╕рджрд╕реНрдпрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд╕рджрд╕реНрдпрддрд╛ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, WNF (рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) WNF_SUBSCRIPTION рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рднрд░реЗ рдЬрд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдФрд░ рд╕рдВрджрд░реНрдн, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрддреЗ ntdll.dll рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



WNF рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ



рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рдЕрдЧрд▓рд╛ рднрд╛рдЧ рджреЗрдЦреЗрдВред



WNF рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ


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



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



WnfCom


WnfCom рдПрдХ рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓ ( github рд╕реНрд░реЛрдд рдХреЛрдб ) рд╣реИ рдЬреЛ WNF рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


  • рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рдЖрдкрдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░рд╛рдЬреНрдп рдирд╛рдо ( рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ) рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ- рд╕рд╛рдЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдирд╛рдо рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛

рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:


 >>> from wnfcomimport Wnfcom >>> wnfserver = Wnfcom() >>> wnfserver.CreateServer() [SERVER] StateNamecreated: 41c64e6da5559945 >>> wnfserver.Write(b"potatosoup") Encoded Name: 41c64e6da5559945, Clear Name: 6e99931 Version: 1, Permanent: No, Scope: Machine, Lifetime: Temporary, Unique: 56627 State update: 11 bytes written 

 >>> from wnfcomimport Wnfcom >>> wnfclient = Wnfcom() >>> wnfclient.SetStateName("41c64e6da5559945") >>> wnfclient.Listen() [CLIENT] Event registered: 440 [CLIENT] Timestamp: 0x1 Size: 0xb Data:00000000: 70 6F 74 61 74 6F 20 73 6F 75 70 potato soup 


WnfDump


WnfDump C. рдореЗрдВ рд▓рд┐рдЦреА рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдХреЗ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ https://github.com/ionescu007/wnfun рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


  • -d ( D ump) рд░рдЬрд┐рд╕реНрдЯреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдЧрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА WNF рд░рд╛рдЬреНрдп рдирд╛рдореЛрдВ рдХреЛ рдбрдВрдк рдХрд░реЗрдВред рдЗрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
    • -v ( V erbose) рдПрдХ рд╡рд░реНрдмреЛрдЬрд╝ рдЖрдЙрдЯрдкреБрдЯ рдЬрд┐рд╕рдореЗрдВ WNF рд░рд╛рдЬреНрдп рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдбрдВрдк рд╢рд╛рдорд┐рд▓ рд╣реИ;
    • -s ( S ecurity) рд╕реБрд░рдХреНрд╖рд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ - SDNL WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рддрд╛рд░ред
  • -b ( рдмреА рд░реБрдЯ-рдмрд▓) рдЕрд╕реНрдерд╛рдпреА WNF рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдореЛрдВ рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдЧрдгрдирд╛ (рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ)
  • -i ( I nformation) рдПрдХрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ WNF рд░рд╛рдЬреНрдп рдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
  • -r ( R ead) рдирд┐рд░реНрджрд┐рд╖реНрдЯ WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ
  • -w ( рдбрдмреНрд▓реНрдпреВ рд╕рдВрд╕реНрдХрд╛рд░) рдирд┐рд░реНрджрд┐рд╖реНрдЯ WNF рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВ
  • -рдПрди ( рдПрди рдУрдЯреАрдлрд┐рдХреЗрд╢рди) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рд╕реНрдерд┐рддрд┐ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЧреНрд░рд╛рд╣рдХ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛)


рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рд╣рдорд▓реЗ рдХреА рд╕рддрд╣


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



рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрдЯреАрдХрд░рдг


рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рд╣рдЬрд╛рд░реЛрдВ рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рд░рд╛рдЬреНрдп рдирд╛рдореЛрдВ рдХреЛ рдкрдврд╝рдирд╛, рдХрдИ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рджрд┐рдЦрддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдРрд╕реЗ рдереЗ рдЬрд┐рдирдХрд╛ рдбреЗрдЯрд╛ рд╕рдВрджрд┐рдЧреНрдз рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рдпрд╛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред


рдХрдИ рдорд╢реАрдиреЛрдВ рдкрд░ рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдПрдХ рдЧреБрдЪреНрдЫрд╛, рд╕реНрдЯреИрдХ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдерд╛, рдЬреЛ рдХрд┐ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрдЧ / рднреЗрджреНрдпрддрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЬреБрд▓рд╛рдИ рдореЗрдВ MSRC рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдирд╡рдВрдмрд░ рдореЗрдВ (рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдмрд╛рдж) рд╕рд╣реА рдХрд░ рджреА рдЧрдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: WNF_AUDC * рдИрд╡реЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 4 рдХрд┐рд▓реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреИрдХ рд▓реАрдХ рд╣реБрдЖ!


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



рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ


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


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



рдЕрд╕реНрдерд╛рдпреА рд░рд╛рдЬреНрдп рдирд╛рдореЛрдВ рдФрд░ рдЙрдирдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛


рд▓реЗрдХрд┐рди рдЕрд╕реНрдерд╛рдпреА рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЪрд╛рд▓реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреА: рд╡реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдХреЗрд╡рд▓ рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ (! Wnf) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрд╕реНрдерд╛рдпреА рдирд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдХрдард┐рди рд╢рдХреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВ:


  • рд╕рдВрд╕реНрдХрд░рдг рд╣рдореЗрд╢рд╛ 1 рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ
  • рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рд╣рдореЗрд╢рд╛ WnfTemporaryStateName рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ
  • рд╕реНрдерд╛рдпреА рдзреНрд╡рдЬ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд╕реНрдерд╛рдпреА рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)
  • рд╕реНрдХреЛрдк (рд╕реНрдХреЛрдк) 4 рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ

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


рдЕрд╕реНрдерд╛рдпреА рдирд╛рдо рд╕реБрд░рдХреНрд╖рд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (рдЕрдиреНрдп рдЕрд╕реНрдерд╛рдпреА рдирд╛рдо рдбреЗрдЯрд╛ рдХреА рддрд░рд╣) рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдирд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдХрд░реНрдиреЗрд▓ рдореЛрдб рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп Wnf рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдкрдарди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗрдВред
  • рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рд╕рдлрд▓ рд▓реЗрдЦрди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 0 рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрднреЛрдХреНрддрд╛ рдЕрднреА рддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдФрд░ рдлрд┐рд░, рдПрдХ рдЪрд╛рд▓ рд╣реИ: рд╣рдо рдЙрдкрдпреБрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдЯрд╛рдореНрдк рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд▓реЗрдмрд▓ 0xFFFFFFFF рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рд▓реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕ рдЪреЗрдХ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рдорд╛рди рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред

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



рд╕реВрдЪреАрдмрджреНрдз рд╕рджрд╕реНрдп


WNF_PROCESS_CONTEXT рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рднреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕реВрдЪреА рдкреНрд░рдореБрдЦ (LIST_ENTRY) рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ WNF_SUBSCRIPTION рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рд╣реИред


рдХрд░реНрдиреЗрд▓-рдореЛрдб рдЧреНрд░рд╛рд╣рдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИрдВред рд╣рдо WNF_SUBSCRIPTT рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЙрдирдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдбрд┐рдмрдЧрд░ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдЗрд╡реЗрдВрдЯ рдПрдЧреНрд░реАрдЧреЗрдЯрд░ (CEA.SYS) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓рдмреИрдХ рдкрддреЗ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред


рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдкрддрд╛ NULL рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, RtlpWnfProcessSubscos рдЯреЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ WNF_USER_SUBSCRIPTION рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдбрдВрдк рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрд▓рдмреИрдХ рдкрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЪрд░рд┐рддреНрд░ рд╕реНрдерд┐рд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЦреБрд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдХрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ (CEA.SYS рдХрд░реНрдиреЗрд▓ рдореЛрдб рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛) рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЗ рдХрдИ рдЗрд╡реЗрдВрдЯ рдПрдЧреНрд░реАрдЧреЗрдЯрд░ (EventAggregation.dll) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбрдмреНрд▓реНрдпреВрдПрдирдПрдл рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо


рдпрд╣ рдЦрдВрдб рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ WNF рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдо рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВред



WNF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛


рдХреБрдЫ WNF рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдорд╢реАрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рд░реБрдЪрд┐ рд╣реИ:


  • WNF_WIFI_CONNECTION_STATUS - рд╡рд╛рдпрд░рд▓реЗрд╕ рд╕реНрдерд┐рддрд┐
  • WNF_BLTH_BLUETOOTH_STATUS - рдЗрд╕реА рддрд░рд╣, рд▓реЗрдХрд┐рди рдмреНрд▓реВрдЯреВрде рдХреЗ рд▓рд┐рдП рднреА (WNF_TETH_TETHERING_STATE)
  • WNF_UBPM_POWER_SOURCE - рдкрд╛рд╡рд░ рд╕реНрд░реЛрдд (рдмреИрдЯрд░реА рдпрд╛ рдкрд╛рд╡рд░ рдПрдбреЙрдкреНрдЯрд░) рджрд┐рдЦрд╛рддрд╛ рд╣реИ
  • WNF_SEB_BATTERY_LEVEL - рдореЗрдВ рдмреИрдЯрд░реА рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ
  • рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ WNF_CELL_ * - рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ: рдиреЗрдЯрд╡рд░реНрдХ, рдирдВрдмрд░, рд╕рд┐рдЧреНрдирд▓ рдХреА рд╢рдХреНрддрд┐, рдзрд╛рд░ рдпрд╛ 3G, ...

WNF :


  • WNF_AUDC_CAPTURE/RENDER тАФ ( PID), /
  • WNF_TKBN_TOUCH_EVENT тАФ ,
  • WNF_SEB_USER_PRESENT/WNF_SEB_USER_PRESENCE_CHANGED тАФ Windows


API


, API , API , , /. WNF . , , WNF .


: WNF_SHEL_(DESKTOP)_APPLICATION_(STARTED/TERMINATED) modern- ( , ) DCOM, Win32. тАФ ShellExecute: Explorer, cmd.exe, ...


, WNF API , :


  • WNF_SHEL_LOCKSCREEN_ACTIVE тАФ
  • WNF_EDGE_LAST_NAVIGATED_HOST тАФ URL, ( ) Edge

: Edge



WNF


WNF, . : WNF_FSRL_OPLOCK_BREAK тАФ , (/), PID' !


WNF , . : WNF_SHEL_DDC_(WNS/SMS)_COMMAND тАУ 4 , .


, WNF, . : WNF_CERT_FLUSH_CACHE_TRIGGER ( ), WNF_BOOT_MEMORY_PARTITIONS_RESTORE, WNF_RTDS_RPC_INTERFACE_TRIGGER_CHANGED, ...



WNF


:


  • WriteProcessMemory тАФ
  • ( ) тАФ
  • (Atom) тАФ
  • тАФ , WM_COPYDATA DDE,
  • GUI тАФ ( ) ,

WNF :


  • WNF, (, )
  • Rtl/ZwQueryWnfStateData WNF

, :


  • APC s
  • (Remote Threads)
  • (Changing Thread Context)
  • " window long " тАФ , ,

WNF_USER_SUBSCRIPTION ( WNF_NAME_SUBSCRIPTION, RtlpWnfProcessSubscriptions). ( CFG ), ( 5 6 ).


, : , , , -.




WNF SEB_, ( S ystem E vents B roker). SystemEventsBrokerServer.dll SystemEventsBrokerClient.dll API . , SEB SEB, .


CEA.SYS EventAggregation.dll. " " (Event Aggregation Library), , : , , WNF , . WNF, . .




: .






, Windows Notification Facility Alex' Gabrielle. ( ) redp .



WNF ( ) wincheck . , Gabrielle Viala , redp, : http://redplait.blogspot.com/search/label/wnf .




PoC ( github ) explorer ( тАФ notepad). modexp : Callback WNF_USER_SUBSCRIPTION. :


  • explorer.exe
  • WNF_USER_SUBSCRIPTION
  • RWX- , WriteProcessMemory (, VirtualAllocEx + WriteProcessMemory)
  • WNF_USER_SUBSCRIPTION ( WriteProcessMemory)
  • ntdll!NtUpdateWnfStateData(...) ,
  • WNF_USER_SUBSCRIPTION

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


All Articles