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

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд░рд╣рддрд╛ рд╣реИ рд╡рд╣ рдбреАрдмрдЧрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдмреАрдкреА рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрддреЗ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред

рд╕рдЪ рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдкрд╕реА рдкрддрд╛ рджрд┐рдЦрд╛рддреА рд╣реИ, рди рдХрд┐ рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдкрддрд╛ред рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╢рд░реАрд░ рдкрд╣рд▓реЗ рд╣реА рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪреЗрдХрд╕рдо рд╕рддреНрдпрд╛рдкрди рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдХрд╛рдп рдХреЗ рдкрде рдХреЗ рд╕рд╛рде рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП CreateFile () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ lpFileName рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛ рддрдВрддреНрд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди, рдПрдордбреА 5 рд╣реИрд╢ рдпрд╛ рддреБрдЪреНрдЫ CRC32ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рд╕рднреА рдЪреЗрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ: рдЗрд╕реЗ рддрдерд╛рдХрдерд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рд┐рдВрдЧреЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдирддреАрдЬрддрди, CreateFile () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЙрд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣рд╛рдВ рдПрдХ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХреБрдЫ рд╣рд┐рдВрдЧ рдХрд┐рдП рдЧрдП рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЙрд▓ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ)ред
CreateFile () рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░реНрдиреЗрд▓32-> рдХрд░реНрдиреЗрд▓рдмреЗрд╕-> ntdll рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рд╕реАрдзреЗ рдХрд░реНрдиреЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддрд╕реНрд╡реАрд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдм рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдкрд░ BP рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рдХреЛрдИ рдЪреБрдиреМрддреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдХреЙрд▓ рдХреЗ рдмрд╛рдж рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдЯрд░реНрди рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ рд╣рд┐рдВрдЧреЗрдб рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░реНрд╕ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЛрдб рдХреЛ рдлреИрд▓рд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордЭрджрд╛рд░ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд╣рд╛рдереЛрдВ рдкрд░ рд░рд┐рдЯрд░реНрди рдХреЙрд▓ рдХреЛрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдХреЙрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ред
рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ (delphi7 + Windows 7 32bit):
hFile := CreateFile(PChar(ParamStr(0)), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
1. рдЖрдпрд╛рдд рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ
2. рдХрд░реНрдиреЗрд▓ 32.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ CreateFileA () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
3. рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг CreateFileW () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП kernel32.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА
4. рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг CreateFileW () рдХрд░реНрдиреЗрд▓рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрд░реЗрдВ
5. ntdll.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ ZwCreateFile () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
6. рдХрд░реНрдиреЗрд▓ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
рд╣рдо рдкрд╣рд▓реЗ рдкрд╛рдВрдЪ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рджреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ рдмрд┐рдВрджреБ рд╕рдВрдЦреНрдпрд╛ 6 рдкрд░ рдЕрдорд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП, ntdll.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ ZwCreateFile рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ :)
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рддреАрд╕рд░реА рдЕрдВрдЧреВрдареА (рдпреВрдЬрд░рдореЛрдб) рдХреЗ ZwCreateFile рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
MOV рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдорд╢реАрди рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рд╡рд┐рдВрдбреЛрдЬ рд╡рд┐рд╕реНрдЯрд╛ - 32 рдмрд┐рдЯреНрд╕ (6.0.6002.18005)
.text:77F343D4 public ZwCreateFile .text:77F343D4 ZwCreateFile proc near .text:77F343D4 B8 3C 00 00 00 mov eax, 3Ch .text:77F343D9 BA 00 03 FE 7F mov edx, 7FFE0300h .text:77F343DE FF 12 call dword ptr [edx] .text:77F343E0 C2 2C 00 retn 2Ch .text:77F343E0 ZwCreateFile endp
рд╡рд┐рдВрдбреЛрдЬ 7 - 32 рдмрд┐рдЯреНрд╕ (6.1.7601.17725)
.text:77F055C8 public ZwCreateFile .text:77F055C8 ZwCreateFile proc near .text:77F055C8 B8 42 00 00 00 mov eax, 42h .text:77F055CD BA 00 03 FE 7F mov edx, 7FFE0300h .text:77F055D2 FF 12 call dword ptr [edx] .text:77F055D4 C2 2C 00 retn 2Ch .text:77F055D4 ZwCreateFile endp
рд╡рд┐рдВрдбреЛрдЬ 8 - 32 рдмрд┐рдЯреНрд╕ (6.2.8400.0)
.text:6A21629C public ZwCreateFile .text:6A21629C ZwCreateFile proc near .text:6A21629C B8 64 01 00 00 mov eax, 164h .text:6A2162A1 E8 03 00 00 00 call sub_6A2162A9 .text:6A2162A6 C2 2C 00 retn 2Ch .text:6A2162A6 ZwCreateFile endp
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдВрддрд░ рдХрд╛рдлреА рдХрдо рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ KiFastSystemCall рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИ (OS рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
mov edx, esp sysenter ret
SYSENTER рдХреЗ рдмрдЬрд╛рдп, INT 0x2E рдкрд░ рдХреЙрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ:
рд╡рд┐рдВрдбреЛрдЬ 8 - 64 рдмрд┐рдЯ, 32-рдмрд┐рдЯ рдПрдирдбреАрдЯреАрдПрд▓ (6.2.8400.0)
.text:6B2BF470 public ZwCreateFile .text:6B2BF470 ZwCreateFile proc near .text:6B2BF470 B8 53 00 00 00 mov eax, 53h .text:6B2BF475 64 FF 15 C0 00 00 00 call large dword ptr fs:0C0h .text:6B2BF47C C2 2C 00 retn 2Ch .text:6B2BF47C ZwCreateFile endp
рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 32-рдмрд┐рдЯ рдХреЛрдб рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо 64-рдмрд┐рдЯ рд╣реИ, рдПрдлрдПрд╕ рдЧреЗрдЯрд╡реЗ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: 0C0h, рдЬреЛ рдЕрдВрддрддрдГ рджреЗрд╢реА 64-рдмрд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╡рд┐рдВрдбреЛрдЬ 8 - 64 рдмрд┐рдЯ, 64-рдмрд┐рдЯ рдПрдирдбреАрдЯреАрдПрд▓ (6.2.8400.0)
.text:0000000180003110 public NtOpenFile .text:0000000180003110 NtOpenFile proc near .text:0000000180003110 4C 8B D1 mov r10, rcx .text:0000000180003113 B8 31 00 00 00 mov eax, 31h .text:0000000180003118 0F 05 syscall .text:000000018000311A C3 retn .text:000000018000311A NtOpenFile endp
рд▓реЗрдХрд┐рди, рдЗрд╕ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдЖрд░рдореНрднрд┐рдХ рд╣реИред
EAX рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдирдВрдмрд░ KeServiceDescriptorTable рдЯреЗрдмрд▓ рд╕реЗ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпреЗ рдЗрдВрдбреЗрдХреНрд╕ рд╕реАрдзреЗ рдПрдирдЯреАрдбреАрдПрд▓рдПрд▓ рдХреЛрдб рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ (рддрд╛рд▓рд┐рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдорд╛рдореВрд▓реА рдкреИрдЪ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рд░реЛрд╣ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ:
type
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди NTDLL.DLL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓реЛрдб рдкрддреЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдЯреЗрдмрд▓ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, NtSetInformationThread, ZwOpenFile рдФрд░ NtQueryObject рдХреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рдореЗрдореЛрд░реА рдореЗрдВ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддреЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрд╕рдбреАрдЯреА рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдорд╢реАрди рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдКрдкрд░ред рдкрд░рд┐рдгрд╛рдо FunctionSDTIndex рд╕рд░рдгреА рдореЗрдВ рд░рдЦреЗ рдЧрдП рд╣реИрдВред
рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрд╕рдбреАрдЯреА рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╕реНрд╡рдпрдВ ZwOpenFile рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
NTSTATUS ZwOpenFile( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions );
рд╕реНрдЯреИрдХ рдкрд░ рдЫрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд░рдЦреЗ рдЧрдПред рдкрд╣рд▓реЗ рдФрд░ рдЪреМрдереЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреАрд╕рд░рд╛ рд╕реВрдЪрдХред рддреЛ рдареАрдХ рд╣реИ, рд╣рдо рдПрдХ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:
;
рджрд░рдЕрд╕рд▓, рдЯрд╛рд╕реНрдХ рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдЕрдм рдмрд╛рд░реАрдХрд┐рдпреЛрдВ: рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рдХреЛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
SYSENTER, INT2E рдФрд░ WOW64 рд░рдЬрд┐рд╕реНрдЯрд░ред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдФрд░ рдЙрдирдХреА рдмрд┐рдЯрдиреЗрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реИред рджреВрд╕рд░рд╛ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ EBP / ESP рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрд░реЗрдЦрдг рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЬрдмрд░рди рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд╖реНрдЯ рди рдХрд░реЗрдВред
рдЕрдиреНрдп рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - NtSetInformationThread рдбрд┐рдмрдЧрд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреАрдкреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рдпреЛрдЬрдирд╛ рдмрди рдЬрд╛рдПрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрд▓реНрдлреА 7 рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:

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