рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ

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

рддреНрдпрд╛рдЧ


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

рдореИрдВ рдпрд╣ рднреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдРрд╕реА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА


рдЖрд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ C # рдХреЛрдб рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓реИрдпреВрдЯ рдХреЗ рд╕рд╛рде рдорд╕реНрддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

public class Helper { public virtual void Foo(int param) { } } public class Program { public void Main() { Helper helper = new Helper(); var param = 5; helper.Foo(param); } } 

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

  1: mov dword [ebp-0x8], 0x5 2: mov ecx, [ebp-0xc] 3: mov edx, [ebp-0x8] 4: mov eax, [ecx] 5: mov eax, [eax+0x28] 6: call dword [eax+0x10] 

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

рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рд╕реНрдерд╛рдиреАрдп рдЪрд░ 5 рджреЗрдЦрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рд╣реЗрд▓реНрдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкрддреЗ рдХреЛ рдПрдХреНрдЬрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкрддрд╛ рд╣реИред
рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ edx рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЪрд░ 5 рдХреА рдирдХрд▓ рд╣реИ
рдЪреМрдереА рдкрдВрдХреНрддрд┐ рдкрджреНрдзрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрддреЗ рдХреЛ eax рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреА рд╣реИ
рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ 40 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдИрдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдПрдХ рд╢рд┐рдлреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрддреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 40 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкрддреЗ рдкрд░ рдореЗрдореЛрд░реА рд╕реЗ рдорд╛рди рдХреЛ рд▓реЛрдб рдХрд░рдирд╛: рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ред (рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрддреА рд╣реИред рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛, рдИрдХреНрд▓рд╛рд╕ рдкрддрд╛, рд╡рд┐рднрд┐рдиреНрди рдЭрдВрдбреЗ, рдЬрд┐рд╕рдореЗрдВ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЭрдВрдбрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдкрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рдЕрдм рдИрдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЫрдареА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреЛ рд╢реБрд░реБрдЖрдд рд╕реЗ 16 рдСрдлрд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдВрдЪрд╡рд╛рдВред рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкрд╛рдБрдЪрд╡рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ 4 рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ (ToString, Equals, GetHashCode рдФрд░ Finalize) рд╣реИрдВ, рдЬреЛ рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╣реЛрдВрдЧреЗред

рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ


рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд░рд┐рдХреНрдд (рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рд░рд┐рдХреНрдд рдХреЗ рд╕рдорд╛рди) рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдБред

 [StructLayout(LayoutKind.Explicit)] public class CustomStructWithLayout { [FieldOffset(0)] public Test1 Test1; [FieldOffset(0)] public Test2 Test2; } public class Test1 { public virtual int Useless(int param) { Console.WriteLine(param); return param; } } public class Test2 { public virtual int Useless() { return 888; } } public class Stub { public void Foo(int stub) { } } 

рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд░рд╛рдИ:

  class Program { static void Main(string[] args) { Test2 fake = new CustomStructWithLayout { Test2 = new Test2(), Test1 = new Test1() }.Test2; Stub bar = new Stub(); int param = 55555; bar.Foo(param); fake.Useless(); Console.Read(); } } 

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

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрдЯреМрддреА рдХреА рдЬрд╛рдПрдЧреА? рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ, рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рдЪреБрдХрд╛ рд╣реИред 55555 рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

  mov ecx, [ebp-0x20] mov edx, [ebp-0x10] cmp [ecx], ecx call Stub.Foo(Int32) nop mov ecx, [ebp-0x1c] mov eax, [ecx] mov eax, [eax+0x28] call dword [eax+0x10] 

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

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╣реИред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде Stub рдкреНрд░рдХрд╛рд░ рдХреЗ рдлреВ рд╡рд┐рдзрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рд▓реЗрдХрд┐рди рдмреЗрдХрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдЖрдк рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдорд╢реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: WinDBG рдФрд░ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ :)


рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЫрд╡рд┐

рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ

рдкрд░рд┐рдгрд╛рдо


рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд╛рд╕реНрдЯрдХреЙрд▓ рдХрдиреНрд╡реЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рдордп рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ 2 рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЕрджреНрднреБрдд edx рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреА рдФрд░ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдХрд┐ рд╕рднреА рдмрд╛рдЗрдЯреНрд╕ рдХреЗрд╡рд▓ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЕрдиреБрдкрдпреБрдХреНрдд рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ!

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

PS C # рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

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


All Articles