рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдХреЛрдб рдкрд╕рдВрдж рд╣реИред рдЖрдк рдФрд░ рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рджреЛрд╕реНрдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреАрд╡рди рдореЗрдВ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдРрд╕рд╛ рдХреНрд╖рдг рдЖрдПрдЧрд╛ рдЬрдм рдЖрдкрдХреЗ рд╕рд╛рде рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдмреАрдЪ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реЛрдЧрд╛: рдЖрдк рдмрд╛рд╣рд░ рд╣реИрдВ, рдФрд░ рд╡рд╣ рдЕрдВрджрд░ рд╕реЗ рдЧрд╣рд░рд╛ рд╣реИред рдЖрд╢рд╛рд╣реАрдирддрд╛ рд╕реЗ, рдЖрдк, рд╕рднреА рдХреА рддрд░рд╣, рджреВрд╕рд░реА рддрд░рдл рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреА рддрд░рдлред
NeoQUEST-2019 рдХреЗ рдСрдирд▓рд╛рдЗрди рдЪрд░рдг рд╕реЗ рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 2 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
, рд╣рдо рд░рд┐рд╡рд░реНрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ - рдПрдХрдорд╛рддреНрд░ рдкреНрд░рд╢реНрди рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рд╣реИ рдЬрд┐рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреБрднрд╡ рдФрд░ рднрд╛рдЧреНрдп рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!
Dano
рдХрд┐рдВрд╡рджрдВрддреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рджреА рдЧрдИрдВ: рдПрдХ рдЯреНрд░реИрдлрд┐рдХ рдбрдВрдк рдФрд░ рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓ рдЬрд┐рд╕рдиреЗ рд╕рдорд╛рди рдЯреНрд░реИрдлрд╝рд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Wireshark рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрдВрдк рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

рдбрдВрдк рдореЗрдВ рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 6 рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рд╣реИ - рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реЗ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдирд╛ рдзреНрдпрд╛рди рдмрд┐рдирд╛рд░ рдХреА рдУрд░ рдореЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рдП рдХрд┐ рдХреИрд╕реЗ рд╕рдм рдХреБрдЫ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЗрд╕реЗ рдЖрдИрдбреАрдП рдореЗрдВ рдЦреЛрд▓реЗрдВ:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред WSK рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп Winsock рдХрд░реНрдиреЗрд▓, Windows рдХрд░реНрдиреЗрд▓-рдореЛрдб рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред MSDN рдкрд░, рдЖрдк WSK рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ ред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд┐рдЯ 8 (рдХрд░реНрдиреЗрд▓ рдореЛрдб) - wdk8_km (рдпрд╛ рдХрд┐рд╕реА рднреА рдирдП) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЖрдИрдбреАрдП рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:
рд╕рд╛рд╡рдзрд╛рдиреА, рдЙрд▓реНрдЯрд╛!
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Wsk рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕реЙрдХреЗрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдВрдзрддрд╛ рд╣реИ - рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рд╕рдм_140001608 рдлрд╝рдВрдХреНрд╢рди 4 рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ InitVars рдХрд╣рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдорд╛рди 0xFFFFF78000000320 рдкрддреЗ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкрддреЗ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ рдХреЗ рд╕рдордп рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рдХреЗ рдЯрд┐рдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЪрд▓рд┐рдП TickCount рдХрд╛ рдирд╛рдо рд▓реЗрддреЗ рд╣реИрдВред
EntryPoint рддрдм IRP рдкреИрдХреЗрдЯ (I / O рдЕрдиреБрд░реЛрдз рдкреИрдХреЗрдЯ) рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЖрдк MSDN рдкрд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ
рдкрдврд╝ рд╕рдХрддреЗ
рд╣реИрдВ ред рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмрд╕ рд╕реНрдЯреИрдХ рдореЗрдВ рдЕрдЧрд▓реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкреИрдХреЗрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди IRP_MJ_READ (3) рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдЪрд▓реЛ рдЗрд╕реЗ рдЗрд░рдкреНрд░реЗрдб рдХрд╣рддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ, рдмрджрд▓реЗ рдореЗрдВ, рдХрдВрдкреНрд▓реАрдЯреЗрд╢рди рд░реВрдЯрд┐рди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрдВрдкреНрд▓реАрд╢рдирд░реВрдЯрд╛рдЗрди рдЖрдИрдЖрд░рдкреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЕрдм рддрдХ, рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ - рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред
рд╣рдо рдЖрдЧреЗ EntryPoint рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред IRP рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдм_1400012F8 рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдВрджрд░ рджреЗрдЦреЗрдВ рдФрд░ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдЙрдкрдХрд░рдг (IoCreateDevice) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ AddDeviceред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рд╕рд╣реА рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо "\\ рдбрд┐рд╡рд╛рдЗрд╕ \\ рдХреАрдмреЛрд░реНрдбрдХреНрд▓рд╛рд╕ 0" рд╣реИред рддреЛ рд╣рдорд╛рд░рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ IRP_MJ_READ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирд╛, рдЖрдк
рдкрд╛ рд╕рдХрддреЗ
рд╣реИрдВ рдХрд┐ KEYBOARD_INPUT_DATA рд╕рдВрд░рдЪрдирд╛ рдкреИрдХреЗрдЯ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реИред рдЪрд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрдВрдкреНрд▓реАрд╢рдирд░реВрдЯреАрди рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЖрдИрдбреАрдП рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдлрд╕реЗрдЯ рдФрд░ рдЖрдЧреЗ рдХреЗ рдХреЙрд▓ рд╕реЗ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рд┐рд╕реНрдЯрдПрдВрдЯреНрд░реА, рдХреАрдбрд╛рдЯрд╛ (рдХреБрдВрдЬреА рдХрд╛ рд╕реНрдХреИрди рдХреЛрдб рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ) рдФрд░ рдХреАрдлреНрд▓реИрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
AddDevice рдХреЗ рдмрд╛рдж, рдлрд╝рдВрдХреНрд╢рди sub_140001274 рдХреЛ EntryPoint рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдПрдХ рдирдИ рдзрд╛рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИред
рджреЗрдЦрддреЗ рд╣реИрдВ рдереНрд░реЗрдбрдлрдВрдХ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рд╡рд╣ рд╕реВрдЪреА рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрдВрдХреНрд╢рди sub_140001A18 рдкрд░ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдВред

рдпрд╣ рд╕рдм -140001A68 рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рдореЗрдВ WskSocket рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдФрд░ рдирдВрдмрд░ 0x89E0FEA928230002ред рдмрд╛рдЗрдЯреНрд╕ (0x89 = 137, 0xE0 = 224, 0xFE = 243, 0xA9 = 169, 0x2328 = 9000) рджреНрд╡рд╛рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдбрдВрдк рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ: 169.243.224.137:9000ред рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдФрд░ рдкреЛрд░реНрдЯ рдкрд░ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рднреЗрдЬрддрд╛ рд╣реИ - рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рджреЛ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрдиреНрди рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорддреБрд▓реНрдп рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЯрд┐рдХреНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЙрд╕ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЯрд┐рдХрдХрд╛рдЙрдВрдЯ рдХрд╣рд╛ рдерд╛ред рд╕реВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЪрд░ InitVars рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрди рдЪрд░реЛрдВ рдХреЗ рдорд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг рдорд┐рд▓реЗрдВрдЧреЗ:
(54773 + 7141 * prev_value)% 259200рдпрд╣ рдПрдХ рд░реИрдЦрд┐рдХ congruent
рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рд╣реИ ред рдЗрд╕реЗ TitCount рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ InitVars рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рдЬрдирд░реЗрдЯрд░ рдПрдХ рдбрдмрд▓-рдмрд╛рдЗрдЯ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдХреАрдмреЛрд░реНрдб рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджреЗрд╢ рдХреЗ рд╢реЗрд╖ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдХреБрдЫ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рдХреЗ
xor рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдХреЗ рдЕрдВрддрд┐рдо рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рдЪрд▓реЛ рдареАрдХ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реИ рдкрд░ рдПрдХ рдХрд░реАрдм рджреЗрдЦреЛред рдХреАрдбрд╛рдЯрд╛ рдПрдХ рд╕реНрдХреИрди рдХреЛрдб рд╣реИ рдЬреЛ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдорд╛рдиреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди
KeyFlags рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ:
рдпрджрд┐ рдЖрдк рд╕реНрдХреИрди рдХреЛрдб рдХреА
рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЭрдВрдбрд╛ 0 рд╣реЛрдЧрд╛ (рдХреБрдВрдЬреА рдиреАрдЪреЗ рд╣реИ) рдпрд╛ 1 (рдХреБрдВрдЬреА рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред KEY_E0 рдХреЛ рдмрд╣реБрдд рдХрдо рд╣реА рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднрд░ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди KEY_E1 рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╣рдо рдбрдВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ рдХрд┐ KeyFlags рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, 0 рдХреЗ рд╕рд╛рде рдПрдХ рдмрд░рд╛рдмрд░ рдХрд░реЗрдВ, рджреЛ рдХреНрд░рдорд┐рдХ рдкреАрдПрд╕рд╕реА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, KeyData рдПрдХ рдПрдХрд▓ рдмрд╛рдЗрдЯ рд╣реИ, рдФрд░ рд╣рдо рдЙрдЪреНрдЪ рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди MSS рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЕрдЧрд▓реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП KeyFlags, рдЬрдм рд╕рд╣реА PSC рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╛рди рдмрд┐рдЯ рдорд╛рди рд▓реЗрдВрдЧреЗред рдпрджрд┐ рдпрд╣ рдЧрд▓рдд рдирд┐рдХрд▓рд╛, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЬрд┐рди KeyFlags рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдерд╛, рд╡реЗ 1 рдереЗ, рдЖрджрд┐ред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбрдВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ:
рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рд╣рдо рдЕрдкрдиреА рд╕рдмрд╕реЗ рд╡рд╛рдВрдЫрдиреАрдп рд▓рд╛рдЗрди рдкрд╛рддреЗ рд╣реИрдВ!
NQ2019DABE17518674F97DBA393415E9727982FC52C202549E6C1740BC0933C694B3DEрдЬрд▓реНрдж рд╣реА рд╢реЗрд╖ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рд╣реЛрдВрдЧреЗ, рдпрд╛рдж рдордд рдХрд░реЛ!
PS рдФрд░ рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА NeoQUEST-2019 рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рд╡рд╣ рдкреБрд░рд╕реНрдХрд╛рд░ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИ! рдПрдХ рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рдЖрдпрд╛, рддреЛ
support@neoquest.ru рдкрд░ рд▓рд┐рдЦреЗрдВ!