рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рд╢реБрдн рджрд┐рдиред рдХреНрдпрд╛ рдЖрдк 0xc00007b рдЕрдкрд╡рд╛рдж рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ? X-Ray рдЗрдВрдЬрди рдХреЛ x64 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ, 0cx00007b рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдЖрдИ рд╣реИрдВред 90% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ 64 рдмрд┐рдЯ рдУрдкрдирд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдХрдореА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд▓рдЧрд╛рддрд╛рд░ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдПрдХ рдПрдлрдПрдХреНрдпреВ рд▓рд┐рдЦрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдРрд╕реА рдЦрдмрд░реЗрдВ рджреВрд░ рдирд╣реАрдВ рд╣реБрдИрдВ, рд╕реАрдЖрдИрдПрд╕ рдореЗрдВ рд▓реЛрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдЪрд░рдг 1: рдЬрдм dll рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рдирд╛
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд┐рд░реНрдорд╛рдг ( рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЯрд┐рдкреНрдкрдгреА ) рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ, рдЪрд░рдг 1: рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдВрдХрд┐рдВрдЧ рдпрд╛ рд╣рд╛рдп extern "C"
ред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП: рдЗрдВрдЬрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рддрд░рд╣ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
1) рд╣рдо рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЗрдВрдЬрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрдВрдХреНрд╢рди рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
extern "C" --
2) рд╣рдорд╛рд░реЗ exe рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
using RunFunc = void(__cdecl*)(const char*);
рдЪрд░рдг 2: рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЬрд╛рдВрдЪ
рдЦреИрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдорд┐рд▓рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдУрдПрд╕ рд╣рдореЗрд╢рд╛ рд╕реА :) рдЦрдВрдб рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЪрд╛рд▓рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбреАрдПрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:
рдЪрд░рдг 3: рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реА
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ рдкреВрдЫрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рд╕реНрдЯреЗрдЬ рджреЛ: рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
{ ...
рдирд┐рд╖реНрдХрд░реНрд╖
рдмреЗрд╢рдХ, рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдордЬрд╝реЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!