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

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

рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╣рдо рдЗрд╕ рдкреИрдХрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЖ рдЧрдП, рдФрд░ VB Wrapper рдХреЛрдб рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдмрджрд▓рд╛рд╡ рд╣реБрдП, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рд╕рдорд╛рди рд░рд╣рд╛: рд╕реНрдЯреЗрдЬ 1 рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рдгред рдкрд╣рд▓реЗ рдХреЗ рдирдореВрдиреЛрдВ рдореЗрдВ, Enum * рд╡рд░реНрдЧ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, EnumWindows, EnumCalendarInfo, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдИ) рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд░рдг 1 рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реАрдзреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдЯреЗрдЬ 1
рдкреНрд░рдмрдВрдзрди рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЪрд░рдг 1. рдпрд╣ рдХреЛрдб рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдСрдмрдлреНрдпреВрд╢реЗрд╢рди рдореЗрдердб рд╕реИрдВрдкрд▓ рд╕реЗ рд╕реИрдВрдкрд▓ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
- рдХрдИ (рдХрдЪрд░рд╛ рд╕рд╣рд┐рдд) рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрдХреНрд░ рдЬреЛ рдЪрд░рдг 2 рдХреЛрдб рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдиреАрдВрдж-рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдФрд╕рддрди 1-2 рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред
- рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди (рдирд┐рдпрдорд┐рдд XOR) рдФрд░ рд╕реНрдЯреЗрдЬ 2 рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдгред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдореЛрдЯрд╛рдкреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

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

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

2) SetErrorMode
SetErrorMode API рдХреЙрд▓ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ 0x800 рдФрд░ 0x0 рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рджреВрд╕рд░реА рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ 0x800 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

3) рд╕реЗрдЯрд▓реИрд╕реНрдЯрд░реНрд░
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, SetLastError рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ 0x5 рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ TEB рдореЗрдВ рд▓рд╛рд╕реНрдЯ рдПрд░рд░ рдХреЛрдб рд╡реИрд▓реНрдпреВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдпрд╣ 0x5 рд╣реИ)ред

4) рдХрд░реНрд╕рд░ рдЖрдВрджреЛрд▓рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рдХреЛрдб рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдЙрд╕ рдХреЗ рд╣рд┐рд▓рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред

5) DbgBreakPoint рдФрд░ DbgUiRemoteBreakin
рдбрд┐рдмрдЧрд░ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдХрд░рдг
| рдЯрд┐рдкреНрдкрдгреА
|
GetTickCount + рдиреАрдВрдж
| рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
|
SetErrorMode
| рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
|
SetLastError
| рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
|
GetCursorPos
| рдХрд░реНрд╕рд░ рдЖрдВрджреЛрд▓рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
|
DbgBreakPoint
| рдбрд┐рдмрдЧрд░ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕рдВрд╢реЛрдзрди
|
DbgUiRemoteBreakin
| рдбрд┐рдмрдЧрд░ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕рдВрд╢реЛрдзрди
|
рд╣реБрдХ рд╣рдЯрд╛рдирд╛
| рдХрд╛рд░реНрдп рдХреЗ рдкрд╣рд▓реЗ 5 рдмрд╛рдЗрдЯреНрд╕ ntdll.dll рдореЗрдВ рдмрд╣рд╛рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣реБрдХ рд╣реИрдВ
|
NtSetInformationThread
| рдкреИрд░рд╛рдореАрдЯрд░ 0x11 (ThreadHideFromDebugger)
|
GetThreadContext + DR рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
| рдбреАрдмрдЧ рдбреАрдЖрд░0-рдбреАрдЖрд░ 3, рдбреАрдЖрд░ 6, рдбреАрдЖрд░ 7 рдХреЛ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред
|
рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
| рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ INT3 (0xCC), int 3 (0xCD 0x03) рдФрд░ ud2 (0x0F 0x0B) рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
|
рдХреНрдпреБрдкрд┐рдб (EAX = 0x0)
| рд░рдЬрд┐рд╕реНрдЯрд░ EAX, ECX, EDX рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
|
рдХреНрдпреБрдкрд┐рдб (EAX = 0x40000000)
| рд░рдЬрд┐рд╕реНрдЯрд░ EAX, ECX, EDX рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
|
рдХреНрдпреБрдкрд┐рдб (EAX = 0x1)
| 31 рд╡реЗрдВ ECX рдмрд┐рдЯ рдХреА рдЬрд╛рдБрдЪ рдХреА
|
рдкреАрдИрдмреА (рдмреАрдбрдмреНрдпреВрдЧреЗрдб)
| рдЪреЗрдХ рдХрд╛ рдорд╛рди 0x1 рд╣реИ
|
PEB (NtGlobalFlag)
| рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди 0x70
|
NtQueryInformationProcess
| рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ProcessDebugPort (0x7), ProcessDebugFlags (0x1F), ProcessDebugObjectHandle (0x1E)
|
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рдЬрд╛рдБрдЪ
| рддрд╛рд░ "рдирдореВрдирд╛", "рд╕реИрдВрдбрдмреЙрдХреНрд╕", "рд╡рд╛рдпрд░рд╕", "рдореИрд▓рд╡реЗрдпрд░", "рд╕реНрд╡ред" рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
|
рдпрджрд┐ рдЪрд░рдг 2 рдХреА рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:
1) CreateProcess рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CREATE_SUSPENDED рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рд╣реИред
2) GetContextThread рдФрд░ SetContextThread рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдПрдХ рдирдП рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреЗрдЬ 1 рдХреЛрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
3) рдЪрд░рдг 1 рдФрд░ 2 (рдПрдХ рд▓рдВрдмреЗ рдЪрдХреНрд░ рдФрд░ рд╕рднреА рдЬрд╛рдВрдЪреЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рдЗрд╕ рдмрд╛рд░, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреА рдЬрд╛рдВрдЪ рд╕рдлрд▓ рд╣реИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИред
3 рдЪрд░рдг
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореБрдЦреНрдп рд╡рд╛рдпрд░рд╕ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреЛрдЦрд▓реЗ рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдг рдореБрдЦреНрдп рд╡рд╛рдпрд░рд╕ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрдХ рд╕реАрдЦрд╛
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдпрд╛ рдЙрд╕ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдорд╛рд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреИрдХрд░ рдХреЗ рдХрд╛рдо рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред ред
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЖрдзреБрдирд┐рдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдкреАрдЯреА рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдорд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдХреБрдЦреНрдпрд╛рдд рдкрд░рд┐рд╡рд╛рд░ рднреА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдореВрдиреЗ рдореЗрдВ рдЗрд╕рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдмрд╛рдпрдкрд╛рд╕ рддрдХрдиреАрдХреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЖрдк рдХреЗрд╡рд▓ рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЗрд╕ рд╕рдореВрд╣ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╕рдордп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреА рд╣реИрдВред