рдкрд░реАрдХреНрд╖рд╛ рдЯреНрд░реИрдХрд┐рдВрдЧ: ExamCookie

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

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

ExamCookie


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

ExamCookie рдПрдХ рд╕рд░рд▓ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рджреМрд░рд╛рди рдЫрд╛рддреНрд░ рдХреА рдХрдВрдкреНрдпреВрдЯрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрд╡реИрдз рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдПрдЧреНрдЬрд╛рдордХреЙрдХреА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рднреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ: рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╕рдордп рд╕рдХреНрд░рд┐рдп URL, рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди, рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред

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

рдЯреНрд░реИрдХрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдпреВрдПрдирдЖрдИ рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╢реИрдХреНрд╖рдгрд┐рдХ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЙрди рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ UNI рд▓реЙрдЧрд┐рди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╕рдВрднрд╡ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред



рдмрд╛рдЗрдирд░реА рдЬрд╛рдирдХрд╛рд░реА


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдЧреНрдЬрд╝рд┐рдХреНрдпреВрд╕реА рд╣реЛрдо рдкреЗрдЬ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ x86 .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрд╛рдЗрдирд░реА MD5 рд╣реИрд╢ 63AFD8A8EC26C1DC368D8FF8710E337D 24 рдЕрдкреНрд░реИрд▓, 2019 рдХреЛ EXAMCOOKIE APS 63AFD8A8EC26C1DC368D8FF8710E337D рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, .NET рдмрд╛рдЗрдирд░реА рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╢рд╛рдпрдж рд╣реА рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЖрдИрдПрд▓ рдХреЛрдб рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╕рд╣реА рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдирд┐рдЧрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рдбреАрдмрдЧ рд▓реЙрдЧ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рднреА рдмрд╛рдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдХрдо рд╕реЗ рдХрдо рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА :-)

рдЖрдХреНрд╖реЗрдк (рдЖрдВрд╕реБрдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдБрд╕реА)


рдЬрдм рд╣рдордиреЗ dnSpy рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓рд╛, рддреЛ рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд▓рд╛рдкрддрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рджреЗрдЦрд╛:

 // Token: 0x0600003D RID: 61 RVA: 0x00047BB0 File Offset: 0x00045FB0 [STAThread] [DebuggerHidden] [EditorBrowsable(EditorBrowsableState.Advanced)] [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void Main(string[] Args) { } 

рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рд░рдг рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рддрдХ рдЪрд▓рддрд╛ рд╣реИ, рдЖрдЗрдП рджреЗрдЦреЗрдВ:

 // Token: 0x06000001 RID: 1 RVA: 0x00058048 File Offset: 0x00055048 static <Module>() { <Module>.\u206B\u202B\u200B\u206F\u206C\u202D\u200D\u200E\u202D\u206B\u206F\u206F\u202C\u202A\u206B\u202E\u202A\u206C\u202A\u206C\u200B\u206A\u202D\u206C\u202C\u206C\u200F\u202C\u206C\u202C\u200C\u206A\u200C\u206C\u200B\u206B\u202B\u206E\u202C\u202B\u202E(); <Module>.\u206C\u200D\u200F\u200E\u200C\u200C\u200F\u200F\u206E\u206A\u206A\u200B\u202C\u206A\u206B\u200D\u206E\u200E\u202D\u206B\u202C\u206C\u202D\u206D\u200C\u200F\u206E\u200F\u206E\u206A\u202B\u206B\u200E\u206B\u202E\u206F\u206A\u202E\u202C\u202A\u202E(); <Module>.\u200B\u202D\u200F\u200F\u202A\u206D\u202C\u206B\u206E\u202A\u206F\u206C\u200D\u200C\u202D\u200F\u202B\u202C\u202B\u206D\u206D\u202D\u206E\u200D\u206D\u206A\u202A\u202C\u200C\u206F\u206B\u206E\u200D\u202E\u206F\u200C\u206B\u200E\u206D\u206A\u202E(); } 

рдХреВрд▓ред рдпрд╣ 2019 рд╣реИ, рдФрд░ рд▓реЛрдЧ рдЕрднреА рднреА рдХрдиреНрдлреНрдпреВрд╕рд░ (рдкреВрд░реНрд╡) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдордиреЗ рддреБрд░рдВрдд рдЗрд╕ рдЕрдкрдШрдЯрди рдХреЛрдб рдХреЛ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдФрд░ рдХреЛрдбрд╛рдВрддрд░рдХ рд╣реЗрдбрд░ рдХреА рдЬрд╛рдБрдЪ рдХреА:

  [рдореЙрдбреНрдпреВрд▓: рдХрдиреНрдлреНрдпреВрдЬреНрдбрдмреА ("рдХрдиреНрдлреНрдпреВрдЬрд╝рд░.рдХреЛрд░ 1.1.0 +3636377a")] 

рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ obfuscated рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрд░реНрдпреБрдХреНрдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рдХрд╛рдпреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рд╣рдорд╛рд░реА рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдореЛрдЯрд╛рдкреЗ рдХреЗ рдХрд╛рд░рдг рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ ... рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП:



рдпрд╣ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рдЪрд░реНрдЪрд╛ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдореИрдВ рдПрдХ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд, рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдмрд╛рдЗрдирд░реА рдХреЛ рдХрдиреНрдлреНрдпреВрдЬрд╝рд░ (рдкреВрд░реНрд╡) рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: .NET рдмрд┐рдирд░реАрдЬрд╝ рдбрдореНрдкрд░ рдпрд╛ рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ <MODULE> .ctor рдореЗрдВ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдбрдВрдк рдХрд░реЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреИрдХрд░ рд╣рдореЗрд╢рд╛ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд░рд╣реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдмрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ ред

рд╣рдордиреЗ MegaDumper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрдВрдкрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИ:



ExamCookie рдмрд╛рдЗрдирд░реА рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:



рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдХреЛрдбрд╛рдВрддрд░рдХ рдЕрдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬреЛ рдЗрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдб рд╣реЛрддреА рд╣реИред

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

 else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.SymbolicLink)) { Module1.DebugPrint(<Module>.smethod_5<string>(1582642794u), new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.Tiff)) { Module1.DebugPrint(<Module>.smethod_2<string>(4207351461u), new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.UnicodeText)) { Module1.DebugPrint(<Module>.smethod_5<string>(3536903244u), new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.WaveAudio)) { Module1.DebugPrint(<Module>.smethod_2<string>(2091555364u), new object[0]); } 

рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрдиреНрдлрд╝реНрдпреВрдЬрд╝рд░ (Ex), .NET рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЫрджреНрдо рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдХрдиреНрдлрд╝реНрдпреВрдЬрд╝рд░ (Ex) рдХреЛ рдЗрддрдиреА рдмрд╛рд░ рд╣реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдбреАрдмреЙрд╕реНрдлреИрдХреНрд╢рди рдЯреВрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ .NET рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдмрд╛рдЗрдирд░реА рдбрдВрдк рдкрд░ рдХреЛрдб рдХреНрд░реИрдХрд░ рд╕реЗ ConfuserExStringDecryptor рдЪрд▓рд╛рдПрдВ:



рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:

 else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.SymbolicLink)) { Module1.DebugPrint("ContainsData.SymbolicLink", new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.Tiff)) { Module1.DebugPrint("ContainsData.Tiff", new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.UnicodeText)) { Module1.DebugPrint("ContainsData.UnicodeText", new object[0]); } else if (System.Windows.Forms.Clipboard.ContainsData(DataFormats.WaveAudio)) { Module1.DebugPrint("ContainsData.WaveAudio", new object[0]); } 

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

рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ "рдЫрд┐рдкреА рд╣реБрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛" рдирд╣реАрдВ рдорд┐рд▓реАред рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рдореНрди рдЬрд╛рдирдХрд╛рд░реА рд╕рдордп-рд╕рдордп рдкрд░ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ:

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реВрдЪреА (рдкреНрд░рддреНрдпреЗрдХ 5000 рдПрдордПрд╕)
  • рд╕рдХреНрд░рд┐рдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ (рдкреНрд░рддреНрдпреЗрдХ 1000 рдПрдордПрд╕)
  • рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб (рдкреНрд░рддреНрдпреЗрдХ 500 рдПрдордПрд╕)
  • рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ (рдкреНрд░рддреНрдпреЗрдХ 5000 рдПрдордПрд╕)
  • рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреЗрдкреНрдЯрд░ рдХреА рд╕реВрдЪреА (рдкреНрд░рддреНрдпреЗрдХ 20,000 рдПрдордПрд╕)

рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рдЙрдмрд╛рдК рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рдВрдкреВрд░реНрдг рдЖрд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╕реАрдзреЗ рдЬрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЕрдиреБрдХреВрд▓рдХ


рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреЗрдкреНрдЯрд░ .NET NetworkInterface.GetAllNetworkInterfaces() рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ :

 NetworkInterface[] allNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface networkInterface in allNetworkInterfaces) { try { // ... // TEXT FORMATTING OMITTED // ... dictionary.Add(networkInterface.Id, stringBuilder.ToString()); stringBuilder.Clear(); } catch (Exception ex) { AdapterThread.OnExceptionEventHandler onExceptionEvent = this.OnExceptionEvent; if (onExceptionEvent != null) { onExceptionEvent(ex); } } } result = dictionary; 

рд╕рдХреНрд░рд┐рдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ


рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╕рднреА рдЦреБрд▓реА рд╣реБрдИ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗрд╡рд▓ рд╕рдХреНрд░рд┐рдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдУрд╡рд░рдмреНрд▓рд╛рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рд╕реБрдВрджрд░ рдЫрджреНрдо рдХреЛрдб рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ:

 var whiteList = { "devenv", "ExamCookie.WinClient", "ExamCookie.WinClient.vshost", "wermgr", "ShellExperienceHost" }; // GET WINDOW INFORMATION var foregroundWindow = ApplicationThread.GetForegroundWindow(); ApplicationThread.GetWindowRect(foregroundWindow, ref rect); ApplicationThread.GetWindowThreadProcessId(foregroundWindow, ref processId); var process = Process.GetProcessById(processId); if (process == null) return; // LOG BROWSER URL if (IsBrowser(process)) { var browserUrl = UiAutomation32.GetBrowserUrl(process.Id, process.ProcessName); // SEND BROWSER URL TO SERVER if (ValidBrowserUrl(browserUrl)) { ReportToServer(browserUrl); } } else if (!whiteList.contains(process.ProcessName, StringComparer.OrdinalIgnoreCase)) { ReportToServer(process.MainWindowTitle); } 

рдорд╣рд╛рди ... рд▓реЛрдЧ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдХрднреА рд░реБрдХрддреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реА рд╕реЛрдЪрддреЗ рд╣реИрдВ: "рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ, рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ," рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

 private bool IsBrowser(System.Diagnostics.Process proc) { bool result; try { string left = proc.ProcessName.ToLower(); if (Operators.CompareString(left, "iexplore", false) != 0 && Operators.CompareString(left, "chrome", false) != 0 && Operators.CompareString(left, "firefox", false) != 0 && Operators.CompareString(left, "opera", false) != 0 && Operators.CompareString(left, "cliqz", false) != 0) { if (Operators.CompareString(left, "applicationframehost", false) != 0) { result = false; } else { result = proc.MainWindowTitle.Containing("Microsoft Edge"); } } else { result = true; } } catch (Exception ex) { result = false; } return result; } 

 private string GetBrowserName(string name) { if (Operators.CompareString(name.ToLower(), "iexplore", false) == 0) { return "IE-Explorer"; } else if (Operators.CompareString(name.ToLower(), "chrome", false) == 0) { return "Chrome"; } else if (Operators.CompareString(name.ToLower(), "firefox", false) == 0) { return "Firefox"; } else if (Operators.CompareString(name.ToLower(), "opera", false) == 0) { return "Opera"; } else if (Operators.CompareString(name.ToLower(), "cliqz", false) == 0) { return "Cliqz"; } else if (Operators.CompareString(name.ToLower(), "applicationframehost", false) == 0) { return "Microsoft Edge"; } return ""; } 

рдФрд░ рдХреЗрдХ рдкрд░ рдЪреЗрд░реА:

 private static string GetBrowserUrlById(object processId, string name) { // ... automationElement.GetCurrentPropertyValue(/*...*/); return url; } 

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрднреА рднреА рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрдИ рднреА URL рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд▓рд╛рдпрдХ рднреА рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреА рдЦреЛрдЬ


рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЬреЛ рдХрд╣рддреА рд╣реИ, рдЙрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдЭрдВрдбрд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ ... рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

 File.WriteAllBytes("ecvmd.exe", Resources.VmDetect); using (Process process = new Process()) { process.StartInfo = new ProcessStartInfo("ecvmd.exe", "-d") { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }; process.Start(); try { using (StreamReader standardOutput = process.StandardOutput) { result = standardOutput.ReadToEnd().Replace("\r\n", ""); } } catch (Exception ex3) { result = "-5"; } } 

рдЦреИрд░, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╡реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдмрд╛рд╣рд░реА рдмрд╛рдЗрдирд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ I / O рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдиреНрдп рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдРрд╕рд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ:



рддреЛ рдЕрдм рд╣рдо C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдЦреИрд░, рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ (!!) рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЖрдИрдбреАрдП рдкрд░:

 int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // ecx BOOL v4; // ebx int v5; // ebx int *v6; // eax int detect; // eax bool vbox_key_exists; // bl char vpcext; // bh char vmware_port; // al char *vmware_port_exists; // ecx char *vbox_detected; // edi char *vpcext_exists; // esi int v14; // eax int v15; // eax int v16; // eax int v17; // eax int v18; // eax int v20; // [esp+0h] [ebp-18h] HKEY result; // [esp+Ch] [ebp-Ch] HKEY phkResult; // [esp+10h] [ebp-8h] if ( argc != 2 ) goto LABEL_20; v3 = strcmp(argv[1], "-d"); if ( v3 ) v3 = -(v3 < 0) | 1; if ( !v3 ) { v4 = (unsigned __int8)vm_detect::vmware_port() != 0; result = 0; v5 = (vm_detect::vpcext() != 0 ? 2 : 0) + v4; RegOpenKeyExA(HKEY_LOCAL_MACHINE, "HARDWARE\\ACPI\\DSDT\\VBOX__", 0, 0x20019u, &result); v6 = sub_402340(); LABEL_16: sub_404BC0((int)v6, v20); return 0; } detect = strcmp(argv[1], "-s"); if ( detect ) detect = -(detect < 0) | 1; if ( !detect ) { LABEL_20: phkResult = 0; vbox_key_exists = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "HARDWARE\\ACPI\\DSDT\\VBOX__", 0, 0x20019u, &phkResult) == 0; vpcext = vm_detect::vpcext(); vmware_port = vm_detect::vmware_port(); vmware_port_exists = "1"; vbox_detected = "1"; if ( !vbox_key_exists ) vbox_detected = "0"; vpcext_exists = "1"; if ( !vpcext ) vpcext_exists = "0"; if ( !vmware_port ) vmware_port_exists = "0"; result = (HKEY)vmware_port_exists; v14 = std::print((int)&dword_433310, "VMW="); v15 = std::print(v14, (const char *)result); v16 = std::print(v15, ",VPC="); v17 = std::print(v16, vpcext_exists); v18 = std::print(v17, ",VIB="); v6 = (int *)std::print(v18, vbox_detected); goto LABEL_16; } return 0; } 

рдпрд╣ VMWare I / O рдкреЛрд░реНрдЯ 'VX' рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ:

 int __fastcall vm_detect::vmware_port() { int result; // eax result = __indword('VX'); LOBYTE(result) = 0; return result; } 

рдЕрдЧрд▓рд╛, рд╡рд░реНрдЪреБрдЕрд▓ рдкреАрд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдорд╢реАрди рдХреНрд░реИрд╢ рдХрд╛ рдХрд╛рд░рдг рди рдмрдиреЗ;):

 char vm_detect::vpcext() { char result; // al result = 1; __asm { vpcext 7, 0Bh } return result; } 

... рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ, рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 30 рд╕реЗрдХрдВрдб :(

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

рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, GDPR рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдВрдЪ рдЪрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЙрдирдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрддрд╛рддреА рд╣реИ:

рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд Microsoft Azure рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рд╕рд╣реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рдХреЛ рддреАрди рдорд╣реАрдиреЗ рддрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдореЗрдВ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд░реНрд╡рд░ рдХреА "рд╕реБрд░рдХреНрд╖рд╛" рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ: https://examcookiewinapidk.azurewebsites.net
 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: VfUtTaNUEQ
 рдкрд╛рд╕рд╡рд░реНрдб: AwWE9PHjVc 

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

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

рдЪрдХреНрдХрд░


рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЬрд┐рдЯрд▓ рдкрд░реАрдХреНрд╖рд╛ рдореЙрдирд┐рдЯрд░ рдХреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдЧреНрдЬрд╛рдо рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл ayyxam рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реВрдЪреА


.NET рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ ntdll!NtQuerySystemInformation рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, .NET рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рднреА рд▓реЗрдЯрдмреНрд░реЛрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдХреНрд░рд┐рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбред

 NTSTATUS WINAPI ayyxam::hooks::nt_query_system_information( SYSTEM_INFORMATION_CLASS system_information_class, PVOID system_information, ULONG system_information_length, PULONG return_length) { // DONT HANDLE OTHER CLASSES if (system_information_class != SystemProcessInformation) return ayyxam::hooks::original_nt_query_system_information( system_information_class, system_information, system_information_length, return_length); // HIDE PROCESSES const auto value = ayyxam::hooks::original_nt_query_system_information( system_information_class, system_information, system_information_length, return_length); // DONT HANDLE UNSUCCESSFUL CALLS if (!NT_SUCCESS(value)) return value; // DEFINE STRUCTURE FOR LIST struct SYSTEM_PROCESS_INFO { ULONG NextEntryOffset; ULONG NumberOfThreads; LARGE_INTEGER Reserved[3]; LARGE_INTEGER CreateTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; UNICODE_STRING ImageName; ULONG BasePriority; HANDLE ProcessId; HANDLE InheritedFromProcessId; }; // HELPER FUNCTION: GET NEXT ENTRY IN LINKED LIST auto get_next_entry = [](SYSTEM_PROCESS_INFO* entry) { return reinterpret_cast<SYSTEM_PROCESS_INFO*>( reinterpret_cast<std::uintptr_t>(entry) + entry->NextEntryOffset); }; // ITERATE AND HIDE PROCESS auto entry = reinterpret_cast<SYSTEM_PROCESS_INFO*>(system_information); SYSTEM_PROCESS_INFO* previous_entry = nullptr; for (; entry->NextEntryOffset > 0x00; entry = get_next_entry(entry)) { constexpr auto protected_id = 7488; if (entry->ProcessId == reinterpret_cast<HANDLE>(protected_id) && previous_entry != nullptr) { // SKIP ENTRY previous_entry->NextEntryOffset += entry->NextEntryOffset; } // SAVE PREVIOUS ENTRY FOR SKIPPING previous_entry = entry; } return value; } 

рдмрдлрд░


ole32.dll!OleGetClipboard , рдЬреЛ рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, .NET рдореЗрдВ рдмрдлрд╝рд░реНрд╕ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдмрд╕ S_OK рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ .NET рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдмрд╛рдХреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:

 std::int32_t __stdcall ayyxam::hooks::get_clipboard(void* data_object[[maybe_unused]]) { // LOL return S_OK; } 

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдПрдЧреНрдЬрд╛рдорд┐рдиреЗрд╢рди рд╕рд░реНрд╡рд┐рд▓рд╛рдВрд╕ рдЯреВрд▓ рд╕реЗ рдкреВрд░реЗ рдмрдлрд░ рдХреЛ рдЫрд┐рдкрд╛ рджреЗрдЧрд╛ред

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд▓реЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд .NET рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛ред рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ Graphics.CopyFromScreen рдлрд╝рд╛рд░реНрдорд╕реНрдХреНрд░реАрди .NET рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмрд┐рдЯ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕реЗ gdi32!BitBlt рдХрд╣рддреЗ рд╣реИрдВ gdi32!BitBlt рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдПрдВрдЯреА-рдЪреАрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдХреА рддрд░рд╣, рд╣рдо рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рдЯрдмреЙрд▓ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрд╡рд╛рдВрдЫрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛


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

 std::int32_t __stdcall ayyxam::hooks::get_property_value(void* handle, std::int32_t property_id, void* value) { constexpr auto value_value_id = 0x755D; if (property_id != value_value_id) return ayyxam::hooks::original_get_property_value(handle, property_id, value); auto result = ayyxam::hooks::original_get_property_value(handle, property_id, value); if (result != S_OK) // SUCCESS? return result; // VALUE URL IS STORED AT 0x08 FROM VALUE STRUCTURE class value_structure { public: char pad_0000[8]; //0x0000 wchar_t* value; //0x0008 }; auto value_object = reinterpret_cast<value_structure*>(value); // ZERO OUT OLD URL std::memset(value_object->value, 0x00, std::wcslen(value_object->value) * 2); // CHANGE TO GOOGLE.COM constexpr wchar_t spoofed_url[] = L"https://google.com"; std::memcpy(value_object->value, spoofed_url, sizeof(spoofed_url)); return result; } 

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреА рдЦреЛрдЬ


рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХрд╛ рдЖрд▓рд╕реА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: 1) рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рдкреИрдЪ рдЬрд┐рд╕реЗ рдбрд┐рд╕реНрдХ рдореЗрдВ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╛ 2) рдбрдореА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ :)ред рдЗрд╕рд▓рд┐рдП, рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред Process.Start() CreateProcess рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рд╣реБрдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдбрдореА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╡рд░реНрдг '0' рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

 BOOL WINAPI ayyxam::hooks::create_process( LPCWSTR application_name, LPWSTR command_line, LPSECURITY_ATTRIBUTES process_attributes, LPSECURITY_ATTRIBUTES thread_attributes, BOOL inherit_handles, DWORD creation_flags, LPVOID environment, LPCWSTR current_directory, LPSTARTUPINFOW startup_information, LPPROCESS_INFORMATION process_information ) { // REDIRECT PATH OF VMDETECT TO DUMMY APPLICATION constexpr auto vm_detect = L"ecvmd.exe"; if (std::wcsstr(application_name, vm_detect)) { application_name = L"dummy.exe"; } return ayyxam::hooks::original_create_process( application_name, command_line, process_attributes, thread_attributes, inherit_handles, creation_flags, environment, current_directory, startup_information, process_information); } 

рдбрд╛рдЙрдирд▓реЛрдб


рдкреВрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдкреНрд░реЛрдЧреНрд░рд╛рдо x86 рдмрд╛рдЗрдирд░реА рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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


All Articles