рдирдорд╕реНрдХрд╛рд░ред рдЗрд╕ рдмрд╛рд░ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдВрд╕рддреЗ рд░рд╣реЗред рдореИрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рдкреЙрдЗрдВрдЯрд░реНрд╕ рдФрд░
рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рдирдВрдмрд░ - рдЙрд╕рдХреЗ рдкрддреЗ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рддреНрдпрд╛рдЧ
рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк
рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓рдЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓рд╛
рдкреЛрд╕реНрдЯ рдкрдврд╝реЗрдВред рдпрд╣рд╛рдВ рдореИрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирдХрд╛ рд╡рд░реНрдгрди рд╡рд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдРрд╕реА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдЗрдП рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реА # рдХреЛрдб рдХреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рд╣рдо рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
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); } }
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреАрдИрдЯреА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВред рдореИрдВ рдХреЗрд╡рд▓ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ 32 рдмрд┐рдЯ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
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 рдХреА рдирдХрд▓ рд╣реИ
рдЪреМрдереА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рдкрджреНрдзрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдкрддреЗ рдХреА рдирдХрд▓ рдХреЛ рдИрдПрдХреНрд╕рдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрддреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 40 рдмрд╛рдЗрдЯреНрд╕ рдкрддреЗ рдкрд░ рдореЗрдореЛрд░реА рд╕реЗ рдореВрд▓реНрдп рдХрд╛ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ: рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкрддреЗ рдХреА рд╢реБрд░реБрдЖрддред (рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛, рдИрдХреНрд▓рд╛рд╕ рдкрддрд╛, рд╡рд┐рднрд┐рдиреНрди рдЭрдВрдбреЗ, рдЬрд┐рд╕рдореЗрдВ рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЭрдВрдбрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рдЕрдм рдИрдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреЛрдЯ: .NET рдХреЛрд░ рдореЗрдВ рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдлрд╝реАрд▓реНрдб рд╣реИ (32/64 рдмрд┐рдЯ рдкрд░ рдХреНрд░рдорд╢рдГ 32 рдФрд░ 64 рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП) рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐ рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рд╣реИредрдЫрдареА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреЛ рд╢реБрд░реБрдЖрдд рд╕реЗ 16 рдСрдлрд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд┐рдзрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдВрдЪрд╡рд╛рдВред рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкрд╛рдБрдЪрд╡рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ 4 рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ (
ToString (), Equals (), GetHashCode () рдФрд░ Finalize () ) рд╣реИрдВ, рдЬреЛ рдХреНрд░рдорд╢рдГ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред
рдЧреЛрдЯреЛ рдЕрднреНрдпрд╛рд╕;
practive:
рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ рдРрд╕реЗ рдЫреЛрдЯреЗ рд░рд┐рдХреНрдд (рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рд░рд┐рдХреНрдд рдХреЗ рд╕рдорд╛рди) рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред
[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 рдХреЗ
рдмреЗрдХрд╛рд░ (int j) рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЪреМрдХрд╕ рдкрд╛рдардХ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдкрд░ "55555" рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЕрдм рднреА рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
mov ecx, [ebp-0x20] mov edx, [ebp-0x10] cmp [ecx], ecx call Stub.Foo(Int32) mov ecx, [ebp-0x1c] mov eax, [ecx] mov eax, [eax+0x28] call dword [eax+0x10]
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдердб рдХреЙрд▓ рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣
Stub.Foo (Int32) рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдПрдХреНрд╕реНрдЯреНрд╕ рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкрддреЗ рд╕реЗ рднрд░рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЯрд╛рдЗрдк 2 рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ edx рдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдФрд░ рд╡рд╣рд╛рдВ рд╣рдордиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП edx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИрдВ, рд╡рд╣ рд╕реНрдкрд╖реНрдЯ edx рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ edx рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╣реИред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдЯрдм рдкреНрд░рдХрд╛рд░ рдХреЗ рдлреВ рд╡рд┐рдзрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░
рдмреЗрдХрд╛рд░ () рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдиреАрдЪреЗ рдЖрдк рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдореЗрд░реА рдорд╢реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: WinDBG рдФрд░ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ :)
рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЫрд╡рд┐рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рджрд╢рдорд▓рд╡ рд╕рдВрдХреЗрддрди рдореЗрдВ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдкреВрд░реНрдг
рд╣рдордиреЗ рдлрд╛рд╕реНрдЯрдХреЙрд▓ рдХрдиреНрд╡реЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рдордп рдореЗрдВ 2 рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЕрджреНрднреБрдд edx рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╣рдо рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рднреА рдЬреНрдЮрд╛рди рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯреНрд╕ рд╣реИ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЕрдиреБрдкрдпреБрдХреНрдд рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ!
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
PS C # рдХреЛрдб
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ