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

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



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

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

рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдореВрд▓ рдЖрд╡реЗрджрди рдХреНрдпрд╛ рд╣реИ?


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


рдкрд╛рд╡реЗрд▓ рдпреЛрд╕рд┐рдлрд╝реЛрд╡рд┐рдЪ - рд╡рд┐рдВрдбреЛрдЬ рдХрд░реНрдиреЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (2019)

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ CreateFile рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ fileapi.h рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд░реНрдиреЗрд▓ 32.ll рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ; рдпрд╣ рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рдкрд░ рддрд░реНрдХреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ NtCreateFile рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ (Nt рдЙрдкрд╕рд░реНрдЧ рдХреЗрд╡рд▓ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореВрд▓ рд╣реИ)ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди winternl.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ ntdll.dll рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣ рдкрд░рдорд╛рдгреБ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХреВрджрдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдПрдХ рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ 32 рдПрдирдбреАрдЯреАрдПрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, Microsoft рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджреЗрд╢реА рджреБрдирд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛ рд╣реИред Microsoft рд╕реАрдзреЗ рджреЗрд╢реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рдЕрдирдХрдореНрдлрд░реНрдЯреЗрдмрд▓ рдлреАрдЪрд░реНрд╕ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

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

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

рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?


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

рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?


рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ:

  1. рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
  2. рдереЛрдбрд╝реА рдпрд╛рджрджрд╛рд╢реНрдд рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ
  3. рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
  4. рдкреЗрдбрд╝ рд╡реНрдпрд╕реНрдд рд╕реНрдореГрддрд┐

рдореВрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдореБрдЦреНрдп рдпрд╛ рд╡рд╛рдЗрдирдореИрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди NtProcessStartup рдлрд╝рдВрдХреНрд╢рди, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдзреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рджреЗрд╢реА рдлрд╝рдВрдХреНрд╢рди NtDisplayString рд╣реИ , рдЬреЛ UNICODE_STRING рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред RtlInitUnicodeString рд╣рдореЗрдВ рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

//usage: WriteLn(L"Here is my text\n"); void WriteLn(LPWSTR Message) { UNICODE_STRING string; RtlInitUnicodeString(&string, Message); NtDisplayString(&string); } 

рдЪреВрдВрдХрд┐ рдХреЗрд╡рд▓ ntdll рд╕реЗ рдХрд╛рд░реНрдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп C ++ рджреБрдирд┐рдпрд╛ рд╕реЗ рдЖрддрд╛ рд╣реИ), рдХреЛрдИ рдореЙрд▓реЙрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рдирд╣реАрдВ рд╣реИ (рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдвреЗрд░ (рдпрд╛рдиреА рдвреЗрд░) рдкрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддреЛ рд╣рдо рдЗрд╕рд╕реЗ рд╕реНрдореГрддрд┐ рд▓реЗрдВрдЧреЗред

рдлрд╝рдВрдХреНрд╢рди RtlCreateHeap рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, RtlAllocateHeap рдФрд░ RtlFreeHeap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЬрд╝рд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдореЗрдореЛрд░реА рдХреЛ рдХрдмреНрдЬрд╝реЗ рдФрд░ рдореБрдХреНрдд рдХрд░ рд▓реЗрдВрдЧреЗред

 PVOID memory = NULL; PVOID buffer = NULL; ULONG bufferSize = 42; // create heap in order to allocate memory later memory = RtlCreateHeap( HEAP_GROWABLE, NULL, 1000, 0, NULL, NULL ); // allocate buffer of size bufferSize buffer = RtlAllocateHeap( memory, HEAP_ZERO_MEMORY, bufferSize ); // free buffer (actually not needed because we destroy heap in next step) RtlFreeHeap(memory, 0, buffer); RtlDestroyHeap(memory); 

рдЪрд▓реЛ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

 // https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data typedef struct _KEYBOARD_INPUT_DATA { USHORT UnitId; USHORT MakeCode; USHORT Flags; USHORT Reserved; ULONG ExtraInformation; } KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA; //... HANDLE hKeyBoard, hEvent; UNICODE_STRING skull, keyboard; OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK Iosb; LARGE_INTEGER ByteOffset; KEYBOARD_INPUT_DATA kbData; // inialize variables RtlInitUnicodeString(&keyboard, L"\\Device\\KeyboardClass0"); InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL); // open keyboard device NtCreateFile(&hKeyBoard, SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES, &ObjectAttributes, &Iosb, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN,FILE_DIRECTORY_FILE, NULL, 0); // create event to wait on InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL); NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0); while (TRUE) { NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL); NtWaitForSingleObject(hEvent, TRUE, NULL); if (kbData.MakeCode == 0x01) // if ESC pressed { break; } } 

рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЦреБрд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ NtReadFile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рдХреАрдмреЛрд░реНрдб рд╣рдореЗрдВ рдПрдХ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдпрджрд┐ рдИрдПрд╕рд╕реА рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ NtCreateFile рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЖрдкрдХреЛ \ Device \ KeyboardClass0 рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо NtCreateEvent рдХреЛ рднреА рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ KEYBOARD_INPUT_DATA рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХреАрдмреЛрд░реНрдб рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрдЧреАред

рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди NtTerminateProcess рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдХреЛрдб:

 #include "ntifs.h" // \WinDDK\7600.16385.1\inc\ddk #include "ntdef.h" //------------------------------------ // Following function definitions can be found in native development kit // but I am too lazy to include `em so I declare it here //------------------------------------ NTSYSAPI NTSTATUS NTAPI NtTerminateProcess( IN HANDLE ProcessHandle OPTIONAL, IN NTSTATUS ExitStatus ); NTSYSAPI NTSTATUS NTAPI NtDisplayString( IN PUNICODE_STRING String ); NTSTATUS NtWaitForSingleObject( IN HANDLE Handle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout ); NTSYSAPI NTSTATUS NTAPI NtCreateEvent( OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState ); // https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data typedef struct _KEYBOARD_INPUT_DATA { USHORT UnitId; USHORT MakeCode; USHORT Flags; USHORT Reserved; ULONG ExtraInformation; } KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA; //---------------------------------------------------------- // Our code goes here //---------------------------------------------------------- // usage: WriteLn(L"Hello Native World!\n"); void WriteLn(LPWSTR Message) { UNICODE_STRING string; RtlInitUnicodeString(&string, Message); NtDisplayString(&string); } void NtProcessStartup(void* StartupArgument) { // it is important to declare all variables at the beginning HANDLE hKeyBoard, hEvent; UNICODE_STRING skull, keyboard; OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK Iosb; LARGE_INTEGER ByteOffset; KEYBOARD_INPUT_DATA kbData; PVOID memory = NULL; PVOID buffer = NULL; ULONG bufferSize = 42; //use it if debugger connected to break //DbgBreakPoint(); WriteLn(L"Hello Native World!\n"); // inialize variables RtlInitUnicodeString(&keyboard, L"\\Device\\KeyboardClass0"); InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL); // open keyboard device NtCreateFile(&hKeyBoard, SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES, &ObjectAttributes, &Iosb, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN,FILE_DIRECTORY_FILE, NULL, 0); // create event to wait on InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL); NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0); WriteLn(L"Keyboard ready\n"); // create heap in order to allocate memory later memory = RtlCreateHeap( HEAP_GROWABLE, NULL, 1000, 0, NULL, NULL ); WriteLn(L"Heap ready\n"); // allocate buffer of size bufferSize buffer = RtlAllocateHeap( memory, HEAP_ZERO_MEMORY, bufferSize ); WriteLn(L"Buffer allocated\n"); // free buffer (actually not needed because we destroy heap in next step) RtlFreeHeap(memory, 0, buffer); RtlDestroyHeap(memory); WriteLn(L"Heap destroyed\n"); WriteLn(L"Press ESC to continue...\n"); while (TRUE) { NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL); NtWaitForSingleObject(hEvent, TRUE, NULL); if (kbData.MakeCode == 0x01) // if ESC pressed { break; } } NtTerminateProcess(NtCurrentProcess(), 0); } 

PS: рд╣рдо рдбрд┐рдмрдЧрд░ рдореЗрдВ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ DbgBreakPoint () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ рдХрд░реНрдиреЗрд▓ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП WinDbg рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рджрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдмрд╕ VirtualKD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕рдВрдХрд▓рди рдФрд░ рд╕рднрд╛


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

makefile
 !INCLUDE $(NTMAKEENV)\makefile.def 

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
 TARGETNAME = MyNative TARGETTYPE = PROGRAM UMTYPE = nt BUFFER_OVERFLOW_CHECKS = 0 MINWIN_SDK_LIB_PATH = $(SDK_LIB_PATH) SOURCES = source.c INCLUDES = $(DDK_INC_PATH); \ C:\WinDDK\7600.16385.1\ndk; TARGETLIBS = $(DDK_LIB_PATH)\ntdll.lib \ $(DDK_LIB_PATH)\nt.lib USE_NTDLL = 1 

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

  • TARGETNAME - рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • TARGETTYPE - рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ (.sys) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдлрд╝реАрд▓реНрдб рдорд╛рди DRIVER рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (.lib), рддреЛ рдорд╛рди LIBRARY рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (.exe) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд╛рди рдХреЛ PROGRAM рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
  • UMTYPE - рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдорд╛рди: рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓, рд╡рд┐рдВрдбреЛ рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдЯреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • BUFFER_OVERFLOW_CHECKS - рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдмрдВрдж рдХрд░реЗрдВред
  • MINWIN_SDK_LIB_PATH - рдпрд╣ рдорд╛рди SDK_LIB_PATH рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рд┐рд╕реНрдЯрдо рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕ рдкрд▓ рдореЗрдВ рд╣рдо DDK рд╕реЗ рдЪреЗрдХ рдмрд┐рд▓реНрдб рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред
  • рд╕реНрд░реЛрдд - рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред
  • INCLUDES - рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВред рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдбреАрдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • TARGETLIBS - рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реВрдЪреА, рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • USE_NTDLL рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдерд┐рддрд┐ 1 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдПред
  • USER_C_FLAGS - рдХреЛрдИ рднреА рдЭрдВрдбреЗ рдЬреЛ рдЖрдк рдЖрд╡реЗрджрди рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдмрд┐рд▓реНрдб

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

рддреНрд░реБрдЯрд┐


рджреЗрд╢реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ?


рдСрдЯреЛрдХреЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЕрдиреБрдХреНрд░рдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдВрдЬреА рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

 HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute 

рд╕рддреНрд░ рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реЗрд╢рди рдореИрдиреЗрдЬрд░ рд╣реА рд╕рд┐рд╕реНрдЯрдо32 рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХреНрдЬреАрдХреНрдпреВрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдВрдЬреА рдорд╛рди рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 autocheck autochk *MyNative 

рдорд╛рди рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп ASCII рдореЗрдВ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП, рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рдХреБрдВрдЬреА рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рд╣реЛрдЧрд╛:

 61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00 

рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ ред


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд┐рд╕реНрдЯрдо 32 рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
  2. рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ
  3. рд░рд┐рдмреВрдЯ рдорд╢реАрди

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рджреЗрд╢реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:

install.bat

 @echo off copy MyNative.exe %systemroot%\system32\. regedit /s add.reg echo Native Example Installed pause 

add.reg

 REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager] "BootExecute"=hex(7):61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00 

рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рд░реАрдмреВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрдпрди рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА, рд╣рдореЗрдВ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдкрд░рд┐рдгрд╛рдо

рдкрд░рд┐рдгрд╛рдо


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

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рдХреНрд░рд┐рдп рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рд╕реЗрд╡рд╛ рдХреЗ рдПрдХ рдЕрдиреНрдп рдШрдЯрдХ, рдЕрд░реНрдерд╛рддреН рдпреВрдИрдПрдлрдЖрдИ рдЪрд╛рд▓рдХ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВрдЧреЗред рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдХреЛ рдпрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ

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


All Articles