рдмреИрдЯрд▓рдпреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЬрд░реНрдорди рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдПрдВрдЯреА-рдЪреАрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ 32 рд╡рд░реНрд╖реАрдп
рдмрд╛рд╕реНрдЯрд┐рдпрди рд╣реЗрдЗрдХреЛ рд╕реЛрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЧреЗрдо рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдХреЛ рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рд╡рд┐рд░реЛрдзреА рдзреЛрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдзреЛрдЦрд╛ рджреЗрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЙрддреНрдкрд╛рдж рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрдзреБрдирд┐рдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЦреЛрдЬ рдХреЗ рдирд╡реАрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреА рд░рд╛рд╖реНрдЯреНрд░реАрдпрддрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:
QUALITY MADE IN GERMANY
ред рдмреИрдЯрд▓рдПрдИ рдореЗрдВ рдХрдИ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЙрди рдЦреЗрд▓реЛрдВ рдореЗрдВ рдерд┐рдПрдЯрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рд╣реИред рдЪрд╛рд░ рдореБрдЦреНрдп рддрддреНрд╡ рд╣реИрдВ:
- BEService
- рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛, рдЬреЛ рдмреИрдЯрд▓рдПрдИ рдмреЗрд╕реЗрд╡рд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдмреАрдбрд╛рд╕реА рдФрд░ рдмреЗрд╕рд┐рдХ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ ред
- BEDaisy
- рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдХрд░реНрдиреЗрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдЬреЛ рдЧреЗрдо рдХреЛ рдЕрд╡реИрдз рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рд┐рдиреЗрдорд╛рдШрд░реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╡рд╛рд░рдХ рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ рдФрд░ рдорд┐рдиреА рдлрд┐рд▓реНрдЯрд░ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ
- BEClient
- рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╡рд┐рдВрдбреЛрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд▓реЛрдЧреЛрдВ рд╕рд╣рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рдЯреЗрдХреНрд╢рди рд╡реИрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдпрд╣ рдЦреЗрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред
- BEServer
- рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдмреИрдХрдПрдВрдб рд╕рд░реНрд╡рд░, рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЪреЗрдЯрд░реНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
shellcode
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдмреИрдЯрд▓рдИ рд╢реЗрд▓ рдХреЛрдб рдХрд╛ рдПрдХ рдбрдВрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдФрд░ рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрдЯрд▓рдПрд▓рдИ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИред рд╣рдордиреЗ рдмреИрдЯрд▓рдПрдИ рдХрд╛ рдЫрд╣ рдорд╣реАрдиреЗ рддрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╢реЗрд▓рдХреЛрдб рдХрд╛ рд╣рдорд╛рд░рд╛ рдЖрдЦрд┐рд░реА рдбрдВрдк рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИред рдЗрд╕ рдЕрдВрддрд┐рдо рдбрдВрдк рд╕реЗ рдореЗрдореЛрд░реА рд╕реЗ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдмреИрдЯрд▓рдИ рдиреЗ рдХреЗрд╡рд▓ рд╢реЗрд▓ рдХреЛрдб рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдФрд░ рдкрд┐рдЫрд▓реА рдкрд╣рдЪрд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдХреИрд╕реЗ?
рдмреИрдЯрд▓рдПрдИрдИ рдиреЗ рдХрдерд┐рдд рддреМрд░ рдкрд░ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд╢реЗрд▓ рд╕реЗрд╡рд╛ рдХреЛ рдмреАрдИрдПрд╕рдИрдЖрд░рдПрд╕ рдирд╛рдордХ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╕реЗрд╡рд╛ рдЦреЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд BEClient рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддреА рд╣реИред рдбреЗрдЯрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди
\.namedpipeBattleye
рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 2018 рддрдХ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рд╕рднреА рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдд рдЫреЛрдЯреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ xor-рдПрдиреНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рд╕рд┐рджреНрдз рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рд╣рдорд▓реЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЬрдм рд╢реЗрд▓ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рднреА рдЬреНрдЮрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╢реЗрд▓рдХреЛрдб рдбрдВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рдорд╛рдирдХ Windows API рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реЗ рдХрд┐ CreateFile, ReadFile, рдЖрджрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХреЙрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдбрдВрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реМрдЯреЗ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз) рдЬреЛ рд╕рднреА рдЬреНрдЮрд╛рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ, рдпрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рднреА рдЬреНрдЮрд╛рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЧреЗрдо рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдбрдВрдк рдХрд░реЗрдВред рдЗрд╕реА рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрдВрдк рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдкрдХреЛ рдХрдИ рд╕рдорд╛рди рдбрдВрдк рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗред
рд╡реНрдпрд╛рдЦреНрдпрд╛
рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдЫрджреНрдордХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рд╕реБрдВрджрд░рддрд╛ рдХреА рдЦрд╛рддрд┐рд░
рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдк рдмреИрдЯрд▓рдПрдп рд╢реЗрд▓ рдХреЛрдб рдХреЛ рдбрдВрдк рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдФрд░ рддреБрд░рдВрдд рдЗрди рднрд╛рдЧреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рд▓реЗрдВрдЧреЗ; рд╢реЗрд▓рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд▓реЗрдЦ рдореЗрдВ рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рддреИрдирд╛рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдЗрд╕ рднрдпрд╛рдирдХ рдкреБрд░рд╛рддрдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛: (
рд╕реНрдореГрддрд┐ рдЫрдБрдЯрд╛рдИ
рдПрдВрдЯреА-рдЪреАрдЯреНрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдкрд╣рдЪрд╛рди рддрдВрддреНрд░ рдореЗрдореЛрд░реА рдПрдиреНрдпреВрдорд░реЗрд╢рди рдФрд░ рдореЗрдореЛрд░реА рд╕реНрдХреИрдирд┐рдВрдЧ рд╣реИ рдЬреЛ
рдЬреНрдЮрд╛рдд рдзреЛрдЦрд╛ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЕрддреАрдд рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡реА рд╣реИ рдпрджрд┐ рдЖрдк рдЕрд╕реЗрдВрдмрд▓рд░ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдирд╣реАрдВ рднреВрд▓ рдЧрдП рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдмреИрдЯрд▓рдпреЗ рдЦреЗрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░реЗ рдкрддрд╛ рд╕реНрдерд╛рди (рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╢реЗрд▓ рдХреЛрдб рдвреВрдВрдврддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмреИрдЯрд▓ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╕реНрдореГрддрд┐ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдБ
BattlEye рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕рднреА рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдореЗрдореЛрд░реА рдЬреЛ рд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ:
void memory::anomaly_check(MEMORY_BASIC_INFORMATION memory_information) {
рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрдирд┐рдВрдЧ
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмреИрдЯрд▓рдИрдИрдИ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреИрдЯрд░реНрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рднреА рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдЫрджреНрдо рдХреЛрдб рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
рдЗрди рдЪреЗрдХреЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреНрд╖реЗрддреНрд░ рдХреЛ рдлрд┐рд░
рд╕реЗ рд▓рд┐рдЦрдХрд░ рджреЗрдЦрд╛
рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬреНрдЮрд╛рдд рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдкреИрдЯрд░реНрди рдХреА рдЦреЛрдЬ рдореЗрдВ рд╕реНрдХреИрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдореЗрдВ рдирд╣реАрдВ рдкрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ
рдЖрд░рдбрдмреНрд▓реНрдпреВрдПрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдП рдЧрдП рдкреИрдХ рдФрд░ рд╢реНрд╡реЗрддрд╕реВрдЪреАрдмрджреНрдз рдФрд░ рдлрд┐рд░ рд╕реЗ
рд▓рд┐рдЦреЗ рдЧрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛
рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкреИрдХрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдЦрдВрдбрддрд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреИрдЯрд▓рдПрд▓рдИ рд╢реЗрд▓рдХреЛрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпреЗ рдореЗрдореЛрд░реА рдкреИрдЯрд░реНрди рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рд╣реИрдВ:
[05 18] ojectsPUBGChinese [05 17] BattleGroundsPrivate_CheatESP [05 17] [%.0fm] %s [05 3E] 0000Neck0000Chest0000000Mouse 10 [05 3F] PlayerESPColor [05 40] Aimbot: %d02D3E2041 [05 36] HackMachine [05 4A] VisualHacks.net [05 50] 3E232F653E31314E4E563D4276282A3A2E463F757523286752552E6F30584748 [05 4F] DLLInjection-master\x64\Release\ [05 52] NameESP [05 48] Skullhack [05 55] .rdata$zzzdbg [05 39] AimBot [05 39] EB4941803C123F755C623FEB388D41D0FBEC93C977583E930EB683E1DF [05 5F] 55E9 [05 5F] 57E9 [05 5F] 60E9 [05 68] D3D11Present initialised [05 6E] [ %.0fM ] [05 74] [hp:%d]%dm [05 36] 48836424380488D4C2458488B5424504C8BC848894C24304C8BC7488D4C2460 [05 36] 741FBA80000FF15607E0085C07510F2F1087801008B8788100EB [05 36] 40F2AA156F8D2894E9AB4489535D34F9CPOSITION0000COL [05 7A] FFE090 [05 79] %s00%d00POSITION0000COLOR0000000 [05 36] 8E85765DCDDA452E75BA12B4C7B94872116DB948A1DAA6B948A7676BB948902C [05 8A] n<assembly xmlsn='urn:schemas-mi
рдЗрди рдореЗрдореЛрд░реА рдкреИрдЯрд░реНрди рдореЗрдВ рджреЛ-рдмрд╛рдЗрдЯ рд╣реЗрдбрд░ рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рд░ рдореВрд▓реНрдп
05
рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред
рд╣рдо рдЬреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдмреИрдЯрд▓рдИ рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ
BEServer рд╕реЗ рдкреИрдЯрд░реНрди рдХреЛ
рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ
BEClient рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░реВрдк рд╕реЗ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рд╣реИрдВ:
void memory::pattern_check(void* current_address, MEMORY_BASIC_INFORMATION memory_information) { const auto is_user32 = memory_information.allocation_base == GetModuleHandleA("user32.dll"
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рдорд╛рдиреНрдпрддрд╛ (Microsoft)
рдореЙрдбреНрдпреВрд▓ рдЪреЗрдХ рдЦреЗрд▓ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
void memory::module_specific_check_microsoft(MEMORY_BASIC_INFORMATION memory_information) { auto executable = memory_information.protect == PAGE_EXECUTE || memory_information.protect == PAGE_EXECUTE_READ || memory_information.protect == PAGE_EXECUTE_READWRITE auto allocated = memory_information.state == MEM_COMMIT if (!allocated || !executable) continue auto mmres_handle = GetModuleHandleA("mmres.dll" auto mshtml_handle = GetModuleHandleA("mshtml.dll" if (mmres_handle && mmres_handle == memory_information.allocation_base) { battleye_module_anomaly_report module_anomaly_report module_anomaly_report.unknown = 0 module_anomaly_report.report_id = 0x5B module_anomaly_report.identifier = 0x3480 module_anomaly_report.region_size = memory_information.region_size battleye::report(&module_anomaly_report, sizeof(module_anomaly_report), 0 } else if (mshtml_handle && mshtml_handle == memory_information.allocation_base) { battleye_module_anomaly_report module_anomaly_report module_anomaly_report.unknown = 0 module_anomaly_report.report_id = 0x5B module_anomaly_report.identifier = 0xB480 module_anomaly_report.region_size = memory_information.region_size battleye::report(&module_anomaly_report, sizeof(module_anomaly_report), 0 } }
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдБрдЪ (рдЕрдЬреНрдЮрд╛рдд)
рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреЛ рдЗрди рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ
рдХрд┐рд╕реА рдХреЛ
рднреА рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
void memory::module_specific_check_unknown(MEMORY_BASIC_INFORMATION memory_information) { const auto dos_header = (DOS_HEADER*)module_handle const auto pe_header = (PE_HEADER*)(module_handle + dos_header->e_lfanew const auto is_image = memory_information.state == MEM_COMMIT && memory_information.type == MEM_IMAGE if (!is_image) return const auto is_base = memory_information.base_address == memory_information.allocation_base if (!is_base) return const auto match_1 = time_date_stamp == 0x5B12C900 && *(__int8*)(memory_information.base_address + 0x1000) == 0x00 && *(__int32*)(memory_information.base_address + 0x501000) != 0x353E900 const auto match_2 = time_date_stamp == 0x5A180C35 && *(__int8*)(memory_information.base_address + 0x1000) != 0x00 const auto match_2 = time_date_stamp == 0xFC9B9325 && *(__int8*)(memory_information.base_address + 0x6D3000) != 0x00 if (!match_1 && !match_2 && !match_3) return const auto buffer_offset = 0x00
рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЗрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдзреЛрдЦрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╕реЗрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИред
рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: @ how02 рдиреЗ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐
action_x64.dll
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ
action_x64.dll
рдХрд╛ рдЯрд╛рдЗрдо
0x5B12C900
рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдХреЛрдб рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ; рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдореГрддрд┐ рдХреА рд╕реБрд░рдХреНрд╖рд╛
рдмреИрдЯрд▓рдПрдИрдИ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рдкрд╣рдЪрд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ,
PAGE_GUARD рдзреНрд╡рдЬ
рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреА рддрд▓рд╛рд╢
рдХрд░рддрд╛ рд╣реИ , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рдирд╛
рдЬрд╛рдВрдЪреЗ рдХрд┐ рдХреНрдпрд╛
PAGE_GUARD рдзреНрд╡рдЬ
рд╕реЗрдЯ рд╣реИ :
void memory::guard_check(void* current_address, MEMORY_BASIC_INFORMATION memory_information) { if (memory_information.protect != PAGE_NOACCESS) { auto bad_ptr = IsBadReadPtr(current_address, sizeof(temporary_buffer auto read = NtReadVirtualMemory( GetCurrentProcess(), current_address, temporary_buffer, sizeof(temporary_buffer), 0 if (read < 0 || bad_ptr) { auto query = NtQueryVirtualMemory( GetCurrentProcess(), current_address, 0, &new_memory_information, sizeof(new_memory_information), &return_length memory_guard_report.guard = query < 0 || new_memory_information.state != memory_information.state || new_memory_information.protect != memory_information.protect if (memory_guard_report.guard) { memory_guard_report.unknown = 0 memory_guard_report.report_id = 0x21 memory_guard_report.base_address = memory_information.base_address memory_guard_report.region_size = (int)memory_information.region_size memory_guard_report.memory_info = memory_information.type | memory_information.protect | memory_information.state battleye::report(&memory_guard_report, sizeof(memory_guard_report), 0 } } } }
рд╡рд┐рдВрдбреЛ рд╕реЙрд░реНрдЯрд┐рдВрдЧ
рд╢реЗрд▓ рдХреЛрдб BattlEye рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧреЗрдо рдХреЗ рджреМрд░рд╛рди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ (z- рдорд╛рди рджреНрд╡рд╛рд░рд╛) рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЧреЗрдо рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдВрдбреЛ
GetWindowThreadProcessId
рдХреЛ рдЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ
GetWindowThreadProcessId
рдХреЙрд▓ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╡рд┐рдВрдбреЛ рдХреЗ рдЭреВрдареЗ рдорд╛рд▓рд┐рдХ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐
рдмреИрдЯрд▓рдПрдИ рдЖрдкрдХреА рд╡рд┐рдВрдбреЛ рдХреА рдЬрд╛рдВрдЪ рди рдХрд░реЗрдВ ред
void window_handler::enumerate() { for (auto window_handle = GetTopWindow window_handle window_handle = GetWindow(window_handle, GW_HWNDNEXT),
рд╡рд┐рд╕рдВрдЧрддрд┐ рдЦреЛрдЬреЗрдВ
рдпрджрд┐ рджреЛ рд╕реЗ рдХрдо рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреИрдЪрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд┐рдВрдбреЛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BattlEye рд╢реЗрд▓ рдХреЛрдб рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ:
void window_handler::check_count() { if (window_handler::windows_enumerated > 1) return
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЫрдБрдЯрд╛рдИ
CreateToolhelp32Snapshot
рдХреЙрд▓ рдХрд░рдХреЗ рд╕рднреА рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
рдХрд░рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди
рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдмрдЪ рдЬрд╛рддрд╛ рд╣реИ:
рдкрде рдХреА рдЬрд╛рдБрдЪ
рдпрджрд┐ рдЫрд╡рд┐ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ (рдбрд┐рд╕реНрдХ рдХреА рдЬрдбрд╝ рд╕реЗ рдЧрд┐рдирддреА) рдХреЗ рдЕрдВрджрд░ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЙрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдЫрд╡рд┐ рдХреЗ рдкрде рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрдВрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ:
Desktop Temp FileRec Documents Downloads Roaming tmp.ex notepad. ...\. cmd.ex
рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ (рдХреНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдзреНрд╡рдЬ рдмрд┐рдЯ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ):
steam.exe [0x01] explorer.exe [0x02] lsass.exe [0x08] cmd.exe [0x10]
рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЙрдкрдпреБрдХреНрдд
QueryLimitedInformation
рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлреНрд▓реИрдЧ рдмрд┐рдЯ
QueryLimitedInformation
рд╕реЗрдЯ рдХрд░реЗрдЧрд╛, рдпрджрд┐
OpenProcess
рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг
ERROR_ACCESS_DENIED
рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдзреНрд╡рдЬ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЧрдгрдирд╛ рдХрдВрдЯреЗрдирд░ рджреЗрддрд╛ рд╣реИ:
enum BATTLEYE_PROCESS_FLAG { STEAM = 0x1, EXPLORER = 0x2, ERROR = 0x4, LSASS = 0x8, CMD = 0x10 }
рдпрджрд┐ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд╛рдк рд╣реИ, рддреЛ рдЭрдВрдбреЗ рдХреЛ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдИрдбреА
0x40
рд╕рд╛рде рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛
0x40
рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо
рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрдИ рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рд╕реЗ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЖрдк рддреБрд░рдВрдд рдПрдХ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрдирд╛ рдЖрдИрдбреА
0x38
рд╕рд╛рде рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ
"Loadlibr" "Rng " "A0E7FFFFFF81" "RNG " "90E54355" "2.6.ex" "TempFile.exe"
рд╕реНрдЯреАрдо рдЧреЗрдо рдУрд╡рд░рд▓реЗ
рдмреИрдЯрд▓рдПрдИ рд╕реНрдЯреАрдо рдЧреЗрдо рдУрд╡рд░рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрди-рдЧреЗрдо рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдЯреАрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреАрдо рдЧреЗрдореНрд╕ рдУрд╡рд░рд▓реЗ рдХрд╛ рдкреВрд░рд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо
gameoverlayui.exe
; рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд╢реЛрд╖рдг рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧреЗрдо рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЕрд╡реИрдз рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рд╣реИрдХ рдХрд░рдирд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рд╣реИ:
file size != 0 && image name contains (case insensitive) gameoverlayu
рд╕реНрдЯреАрдо рдЧреЗрдо рдХреЗ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреЗрдХ рдЧреЗрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЫрджреНрдо рдХреЛрдб рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдП рдЧрдП рд╣реИрдВред
рд╕реНрдЯреАрдо рдУрд╡рд░рд▓реЗ рдореЗрдореЛрд░реА рд╕реНрдХреИрди
рд╕реНрдЯреАрдо рдЧреЗрдо рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреИрдЯрд░реНрди рдФрд░ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЦрд░рдЧреЛрд╢ рдХреЗ рдЫреЗрдж рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдереЗ, рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдкреИрдЯрд░реНрди рдХрд┐рд╕ рд▓рд┐рдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдзреЛрдЦрд╛ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред
void gameoverlay::pattern_scan(MEMORY_BASIC_INFORMATION memory_information) {
рд╕реНрдХреИрдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреА рд╣реИ, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдкрдЯрд╛рдЦреЗ рдУрд╡рд░рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
void gameoverlay::memory_anomaly_scan(MEMORY_BASIC_INFORMATION memory_information) {
рд╕реНрдЯреАрдо рдЧреЗрдо рдУрд╡рд░рд▓реЗ рд╕реБрд░рдХреНрд╖рд╛
рдпрджрд┐ рд╕реНрдЯреАрдо рдЧреЗрдо рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдХреА рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдЬреИрд╕реЗ
рд▓рд╛рдЗрдЯ (рд╡рд┐рдирдЯреЗрдХ) рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред
void gameoverlay::protection_check(HANDLE process_handle) { auto process_protection = 0 NtQueryInformationProcess( process_handle, ProcessProtectionInformation, &process_protection, sizeof(process_protection), nullptr if (process_protection == 0)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд
рдУрдкрдирдкреНрд░реЛрд╕реЗрд╕ рдХреЙрд▓,
ERROR_ACCESS_DENIED рдХреЛ рдУрд╡рд░рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдИрдбреА
3B
рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред
рдХреНрд░рдордмрджреНрдз рдореЙрдбреНрдпреВрд▓
рд╕реНрдЯреАрдо рдЧреЗрдо рдУрд╡рд░рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕ рдореЙрдбреНрдпреВрд▓ рднреА рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
vgui2_s.dll
рдФрд░
gameoverlayui.dll
ред рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрдИ рдЬрд╛рдБрдЪреЗрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ
gameoverlayui.dll
рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред
рдпрджрд┐ рдпрд╣ рд╢рд░реНрдд рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ:
[gameoverlayui.dll+6C779] == 08BE55DC3CCCCB8????????C3CCCCCC
, рддреЛ
[gameoverlayui.dll+6C779] == 08BE55DC3CCCCB8????????C3CCCCCC
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрддреЗ рдкрд░ vtable рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ
????????
ред рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддрддреНрд╡ рд╕реНрд░реЛрдд рдореЙрдбреНрдпреВрд▓ gameoverlayui.dll рдХреЗ рдмрд╛рд╣рд░ рд╣реИ рдпрд╛ рдПрдХ
int 3
рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ
3B
рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
void gameoverlay::scan_vtable(HANDLE process_handle, char* buffer, MODULEENTRY32 module_entry) { char function_buffer[16 for (vtable_index = 0 vtable_index < 20 vtable_index += 4) { NtReadVirtualMemory( process_handle, *(int*)&buffer[vtable_index], &function_buffer, sizeof(function_buffer), 0 if (*(int*)&buffer[vtable_index] < module_entry.modBaseAddr || *(int*)&buffer[vtable_index] >= module_entry.modBaseAddr + module_entry.modBaseSize || function_buffer[0] == 0xCC )
vgui2_s.dll
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдХреА
vgui2_s.dll
рд╣реИ:
void vgui::scan() { if (!equals(vgui_buffer, "6A08B31FF561C8BD??????????FF96????????8BD????????8B1FF90")) { auto could_read = NtReadVirtualMemory( process_handle, module_entry.modBaseAddr + 0x48338, vgui_buffer, 8, 0) >= 0 constexpr auto pattern_offset = 0x48378
48378
, :
push 04 push offset aCBuildslaveSte_4 ; "c:\buildslave\steam_rel_client_win32"... push offset aAssertionFaile_7 ; "Assertion Failed: IsValidIndex(elem)"
:
push 04 push 00 push 02 push ??
vgui2_s.dll, , , vtable .
Steam
Steam :
void gameoverlay::check_thread(THREADENTRY32 thread_entry) { const auto tread_handle = OpenThread(THREAD_SUSPEND_RESUME|THREAD_GET_CONTEXT, 0, thread_entry.th32ThreadID if (thread_handle) { suspend_count = ResumeThread(thread_handle if (suspend_count > 0) { SuspendThread(thread_handle gameoverlay_thread_report.unknown = 0 gameoverlay_thread_report.report_id = 0x3B gameoverlay_thread_report.suspend_count = suspend_count battleye::report(&gameoverlay_thread_report, sizeof(gameoverlay_thread_report), 0 } if (GetThreadContext(thread_handle, &context) && context.Dr7) { gameoverlay_debug_report.unknown = 0 gameoverlay_debug_report.report_id = 0x3B gameoverlay_debug_report.debug_register = context.Dr0 battleye::report(&gameoverlay_debug_report, sizeof(gameoverlay_debug_report), 0 } } }
LSASS
Windows
lsass.exe , Local Security Authority, , :
if (equals(process_entry.executable_path, "lsass.exe")) { auto lsass_handle = OpenProcess(QueryInformation, 0, (unsigned int)process_entry.th32ProcessID if (lsass_handle) { for (address = 0 NtQueryVirtualMemory(lsass_handle, address, 0, &lsass_memory_info, 0x30, &bytes_needed) >= 0 address = lsass_memory_info.base_address + lsass_memory_info.region_size) { if (lsass_memory_info.state == MEM_COMMIT && lsass_memory_info.type == MEM_PRIVATE && (lsass_memory_info.protect == PAGE_EXECUTE || lsass_memory_info.protect == PAGE_EXECUTE_READ || lsass_memory_info.protect == PAGE_EXECUTE_READWRITE)) {
LSASS , , -, LSASS. BattlEye , /,
ReadProcessMemory
/
WriteProcessMemory
, BEDaisy. BEDaisy , . , , , .
BattlEye id
3C
. :
- WS_EX_TOPMOST :
- (Unicode)
- (Unicode)
- Window style
- Window extended style
- -
- -
- (VM_WRITE|VM_READ)
- :
- тАж.ContentPaksTslGame-WindowsNoEditor_assets_world.pak
- тАж.ContentPaksTslGame-WindowsNoEditor_ui.pak
- тАж.ContentPaksTslGame-WindowsNoEditor_sound.pak
- :
- тАж.BLGameCookedContentScriptBLGame.u
- NtGetContextThread
NoEye
BattlEye NoEye:
GetFileAttributesExA BE_DLL.dll
, .
void noeye::detect() { WIN32_FILE_ATTRIBUTE_DATA file_information if (GetFileAttributesExA("BE_DLL.dll", 0, &file_information)) { noeye_report.unknown = 0 noeye_report.report_id = 0x3D noeye_report.file_size = file_information.nFileSizeLow battleye::report(&noeye_report, sizeof(noeye_report), 0 } }
Beep Null; . , , - . driver device hijacking. , IOCTL .
void driver::check_beep() { auto handle = CreateFileA("\\.\Beep", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 if (handle != INVALID_HANDLE_VALUE) { beep_report.unknown = 0 beep_report.report_id = 0x3E battleye::report(&beep_report, sizeof(beep_report), 0 CloseHandle(handle } }
void driver::check_null() { auto handle = CreateFileA("\\.\Null", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 if (handle != INVALID_HANDLE_VALUE) { null_report.unknown = 0 null_report.report_id = 0x3E battleye::report(&null_report, sizeof(null_report), 0 CloseHandle(handle } }
Sleep delta
, BattlEye (sleep):
void sleep::check_delta() { const auto tick_count = GetTickCount Sleep(1000 const auto tick_delta = GetTickCount() - tick_count if (tick_delta >= 1200) { sleep_report.unknown = 0 sleep_report.report_id = 0x45 sleep_report.delta = tick_delta battleye::report(&sleep_report, sizeof(sleep_report), 0 } }
7zip
BattlEye , 7zip . , . BattlEye 7zip.
void module::check_7zip() { constexpr auto sz_7zipdll = "..\..\Plugins\ZipUtility\ThirdParty\7zpp\dll\Win64\7z.dll" const auto module_handle = GetModuleHandleA(sz_7zipdll if (module_handle && *(int*)(module_handle + 0x1000) != 0xFF1441C7) { sevenzip_report.unknown_1 = 0 sevenzip_report.report_id = 0x46 sevenzip_report.unknown_2 = 0 sevenzip_report.data1 = *(__int64*)(module_handle + 0x1000 sevenzip_report.data2 = *(__int64*)(module_handle + 0x1008 battleye::report(&sevenzip_report, sizeof(sevenzip_report), 0 } }
BattlEye Windows (hal.dll), , .
void module::check_hal() { const auto module_handle = GetModuleHandleA("hal.dll" if (module_handle) { hal_report.unknown_1 = 0 hal_report.report_id = 0x46 hal_report.unknown_2 = 2 hal_report.data1 = *(__int64*)(module_handle + 0x1000 hal_report.data2 = *(__int64*)(module_handle + 0x1008 battleye::report(&hal_report, sizeof(hal_report), 0 } }
рдмреИрдЯрд▓рдПрдИрдИ рдЦреЗрд▓ рдореЗрдВ рднрд░реА рд╣реБрдИ рд╡рд┐рднрд┐рдиреНрди рдЫрд╡рд┐рдпреЛрдВ рдХреА рднреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдЗрди рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдХрдерд┐рдд рд░реВрдк рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣реЗрд░рдлреЗрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓ рджреЗрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ:nvToolsExt64_1
void module::check_nvtoolsext64_1 { const auto module_handle = GetModuleHandleA("nvToolsExt64_1.dll" if (module_handle) { nvtools_report.unknown = 0 nvtools_report.report_id = 0x48 nvtools_report.module_id = 0x5A8 nvtools_report.size_of_image = (PE_HEADER*)(module_handle + (DOS_HEADER*)(module_handle)->e_lfanew))->SizeOfImage battleye::report(&nvtools_report, sizeof(nvtools_report), 0 } }
ws2detour_x96
void module::check_ws2detour_x96 { const auto module_handle = GetModuleHandleA("ws2detour_x96.dll" if (module_handle) { ws2detour_report.unknown = 0 ws2detour_report.report_id = 0x48 ws2detour_report.module_id = 0x5B5 ws2detour_report.size_of_image = (PE_HEADER*)(module_handle + (DOS_HEADER*)(module_handle)->e_lfanew))->SizeOfImage battleye::report(&ws2detour_report, sizeof(ws2detour_report), 0 } }
networkdllx64
void module::check_networkdllx64 { const auto module_handle = GetModuleHandleA("networkdllx64.dll" if (module_handle) { const auto dos_header = (DOS_HEADER*)module_handle const auto pe_header = (PE_HEADER*)(module_handle + dos_header->e_lfanew const auto size_of_image = pe_header->SizeOfImage if (size_of_image < 0x200000 || size_of_image >= 0x400000) { if (pe_header->sections[DEBUG_DIRECTORY].size == 0x1B20) { networkdll64_report.unknown = 0 networkdll64_report.report_id = 0x48 networkdll64_report.module_id = 0x5B7 networkdll64_report.data = pe_header->TimeDatestamp battleye::report(&networkdll64_report, sizeof(networkdll64_report), 0 } } else { networkdll64_report.unknown = 0 networkdll64_report.report_id = 0x48 networkdll64_report.module_id = 0x5B7 networkdll64_report.data = pe_header->sections[DEBUG_DIRECTORY].size battleye::report(&networkdll64_report, sizeof(networkdll64_report), 0 } } }
nxdetours_64
void module::check_nxdetours_64 { const auto module_handle = GetModuleHandleA("nxdetours_64.dll" if (module_handle) { nxdetours64_report.unknown = 0 nxdetours64_report.report_id = 0x48 nxdetours64_report.module_id = 0x5B8 nxdetours64_report.size_of_image = (PE_HEADER*)(module_handle + (DOS_HEADER*)(module_handle)->e_lfanew))->SizeOfImage battleye::report(&nxdetours64_report, sizeof(nxdetours64_report), 0 } }
nvcompiler
void module::check_nvcompiler { const auto module_handle = GetModuleHandleA("nvcompiler.dll" if (module_handle) { nvcompiler_report.unknown = 0 nvcompiler_report.report_id = 0x48 nvcompiler_report.module_id = 0x5BC nvcompiler_report.data = *(int*)(module_handle + 0x1000 battleye::report(&nvcompiler_report, sizeof(nvcompiler_report), 0 } }
wmp
void module::check_wmp { const auto module_handle = GetModuleHandleA("wmp.dll" if (module_handle) { wmp_report.unknown = 0 wmp_report.report_id = 0x48 wmp_report.module_id = 0x5BE wmp_report.data = *(int*)(module_handle + 0x1000 battleye::report(&wmp_report, sizeof(wmp_report), 0 } }
рдореЙрдбреНрдпреВрд▓ рдЕрднрд┐рдЬреНрдЮрд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдЖрдИрдбреА рджреЗрддреЗ рд╣реИрдВ: enum module_id { nvtoolsext64 = 0x5A8, ws2detour_x96 = 0x5B5, networkdll64 = 0x5B7, nxdetours_64 = 0x5B8, nvcompiler = 0x5BC, wmp = 0x5BE
рдЯреАрд╕реАрдкреА рдЯреЗрдмрд▓ рд╕реНрдХреИрди рдХрд░реЗрдВ
- BattlEye TCP- ( ┬л TCP┬╗, TCP table) , IP- Cloudflare-, - pay-to-cheat
xera.ph . - , launcher, . , IP- Cloudflare- . , , .
pay-to-cheat
xera.ph , , .
xera.ph , , , , . , , , , -, , .
void network::scan_tcp_table { memset(local_port_buffer, 0, sizeof(local_port_buffer for (iteration_index = 0 iteration_index < 500 ++iteration_index) {
-:
enum BATTLEYE_REPORT_ID { MEMORY_GUARD = 0x21, MEMORY_SUSPICIOUS = 0x2F, WINDOW_TITLE = 0x33, MEMORY = 0x35, PROCESS_ANOMALY = 0x38, DRIVER_BEEP_PRESENCE = 0x3E, DRIVER_NULL_PRESENCE = 0x3F, MISCELLANEOUS_ANOMALY = 0x3B, PROCESS_SUSPICIOUS = 0x40, LSASS_MEMORY = 0x42, SLEEP_ANOMALY = 0x45, MEMORY_MODULE_SPECIFIC = 0x46, GENERIC_ANOMALY = 0x48, MEMORY_MODULE_SPECIFIC2 = 0x5B, }