рдкрд░рд┐рдЪрдп
рдпрд╣ рдкреНрд░рдХрд╛рд╢рди рдХреБрдЫ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИред рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗрд╡рд▓ рд╕реВрдЪрдирд╛ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИредрдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рдмрд╛рдж рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА
рдпрджрд┐ рдПрдХ рд╕рд░реНрдЬрди рдХреЛ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдПрдХ рд╕реНрдХреЗрд▓рдкреЗрд▓ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдХреЗ рдкреНрд░рддрд┐рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛, рдФрд░ рдПрдХ рдЬрд╛рдирдХрд╛рд░ рдХреЛрдбрд░ рд╕реБрдкрд░ рд╡рд╛рдпрд░рд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдкрдирд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИред
рддреЛ рдЗрди рдкрд╛рдареЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рджрд░рд╛рд░реЗрдВ рдФрд░ рд╣реИрдХ рдХреЗ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢реЛрдз рд╡рд┐рд╖рдп
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдЯрдорд╛рдЗрдирд░ рдкреНрд░реЛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди (рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдкреАрдбреА) рдХреЗ рд▓рд┐рдП рд╣рдо рдкреНрд▓рдЧ-рдЗрди рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЙрдкрдХрд░рдг рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВред
рддреЛ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ C ++ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕ рд╣реИред
class ClassForReadFile { public: ClassForReadFile(); };
APD рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ Doxygen рд╢реИрд▓реА рдореЗрдВ рд╣реЛрдВред рд╣рдореЗрдВ
рдХрдХреНрд╖рд╛ рдкрд░ рдХрд░реНрд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░
CTRL + SHIFT + D рджрдмрд╛рддреЗ рд╣реИрдВ
ред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
class ClassForReadFile { public: ClassForReadFile(); };
рдкреНрд▓рдЧрдЗрди рдиреЗ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рд╛ред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЙрд╕рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдореИрдХреНрд░реЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ
#ifdef DLL_EXPORTS #define DATA_READER_DLL_EXPORTS __declspec(dllexport) #else #define DATA_READER_DLL_EXPORTS __declspec(dllimport) #endif class DATA_READER_DLL_EXPORTS ClassForReadFile { public: ClassForReadFile(); };
C ++ (Windows OS) рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рддрд┐ рдорд╛рдирдХ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
CTRL + SHIFT + D рджрдмрд╛рдПрдВ рдФрд░ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдкреНрдд рди рдХрд░реЗрдВ
рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдереА
class DATA_READER_DLL_EXPORTS ClassForReadFile { };
DATA_READER_DLL_EXPORTS
рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ
ClassForReadFile рдХреЗ рдмрдЬрд╛рдп рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ , рдФрд░ рдЗрд╕ рдирд╛рдо рд╕реЗ рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рддрд┐, рдЕрд░реНрдерд╛рддреН, рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд, рдпрд╛ рддреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рд╣рдо рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рдЪрд░рдг 1
рд╣рдо рд╕реБрд░рд╛рдЧ рддрд▓рд╛рд╢реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪреВрдВрдХрд┐ C / C ++ рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдХреНрд▓рд╛рд╕реЗрд╕ рдХрд╛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдПрдХ рдорд╛рдирдХ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдлрд┐рд░ рднреА рд╣рдо рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ "рдлреЛрд░реНрд╕" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред DATA_READER_DLL_EXPORTS
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдкрд░
, __declspec рдирд┐рд░реНрджреЗрд╢
рд╕реНрд╡рдпрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
class __declspec(dllexport) ClassForReadFile { };
рдФрд░, рд▓реЛ рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛, рд╡реЗ рд╕рд╣реА рд╡рд░реНрдЧ рд╡рд░реНрдгрди рдорд┐рд▓рд╛! рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреАрдбреА рдореЗрдВ рдХреБрдЫ рдХреЛрдб рд╣реИ рдЬреЛ рдХрдХреНрд╖рд╛ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ "__declspec" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред
рд╣рдо Microsoft SDKs рд╕реЗ рдорд╛рдирдХ ildasm.exe рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓рд╛рдЗрди "__declspec" рдвреВрдВрдвреЗрдВред рдпрд╣ 2 рд╡рд┐рдзрд┐рдпреЛрдВ CmdDocComment :: a рдФрд░ CmdDocComment :: b рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдПрдХред рд╣рдо рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рдЕрдзреАрди рдХрд░реЗрдВрдЧреЗред
рдЪрд░рдг 2
рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ CmdDocComment :: рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ
рдпрд╣рд╛рдБ
__declspec рдорд┐рд▓рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИрдВред
рд╕реНрдЯреНрд░рд┐рдВрдЧ a (CmdDocComment.GeneratorInfo A_0) рд╣рдордиреЗ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж
рд╕реВрдЪреА [рд╕рдВрдЦреНрдпрд╛ 3] == "__declspec"
рдбрд┐рд▓реАрдЯ рдореЗрдердб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
list.RemoveAt (num3);
рддрд░реНрдХ рдХрд░рдирд╛ (рдЬрд╝реЛрд░ рд╕реЗ рд╕реЛрдЪрдирд╛):
- CmdDocComment :: рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реИрд░рд┐рдПрдмрд▓ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ
List<string> list = A_0.e;
- рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдлрд╝рдВрдХреНрд╢рди, рд╕рдВрд░рдЪрдирд╛, рд╡рд░реНрдЧ, рдЖрджрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХреАрд╡рд░реНрдб "рдХреНрд▓рд╛рд╕", "рд╕реНрдЯреНрд░рдХреНрдЪрд░", "рдпреВрдирд┐рдпрди" рд╣реИред
list[0] == "struct"
- рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╢рдмреНрдж рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ {"рд╡рд░реНрдЧ", "DATA_READER_DLL_EXPORTS", "ClassForReadFile"} рд╣реЛрдЧрд╛
- рдПрдХ рд▓реВрдк рд╣реИ рдЬреЛ рд╕рд░рдгреА "рдИ" рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рддрддреНрд╡ "__declspec" рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╣реИ
- рдЪрдХреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрд╣ "рдЬрд╣рд╛рдВ" рдпрд╛ ":" рд╢рдмреНрджреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╢рдмреНрдж "рдЬрд╣рд╛рдВ", рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдирд╛ рд╣реИ, рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди ":" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдПрдХ рдирдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
1. рдкрд░рд┐рд╡рд░реНрддрди рдмрд╛рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
2. рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ "рд╕реВрдЪреА" рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ
- рдкрд╣рд▓рд╛ рддрддреНрд╡ рдЫреЛрдбрд╝реЗрдВ;
- рдЕрдЧрд░ рдЕрдЧрд▓рд╛ рддрддреНрд╡ ":" рдирд╣реАрдВ рд╣реИ рдФрд░ "рдЬрд╣рд╛рдВ" рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░рдгреА рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдЯрд╛рдПрдВред
рд╡рд╛рдВрдЫрд┐рдд рдЪрдХреНрд░ рд▓рд┐рдЦрд┐рдП
рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред
рдЪрд░рдг 3
рдЬреЛрд░ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдоред рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрд░реЛрдд рдХреЛрдб, рд╕рдВрдХрд▓рди, рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛ рд▓реЗрдЦрди рд╣реИред рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдиреЗ рд╣рдореЗрдВ рдРрд╕реЗ рдЕрд╡рд╕рд░ рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рд╣рдо рдЕрдиреБрд╢рдВрд╕рд┐рдд
dnSpy рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдо CIL рдХрдорд╛рдВрдб рдХреЗ HEX рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ, рдЬреЛ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдмрд╣реБрдд рд╣реА рд░реЛрдорд╛рдВрдЪрдХ рдФрд░ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рд╣реИ! рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред DnSpy рдЦреЛрд▓реЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдХрд░реЗрдВред
рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдЦреЛрдЬреЗрдВ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдФрд░ IL рдореЗрдВ рджреГрд╢реНрдп рдмрджрд▓реЗрдВ
рд╣рдорд╛рд░рд╛ рдЪрдХреНрд░ рдореИрдВ рдПрдХ рд╕реВрдЪреА рднреА рджреВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рднрд╛рд░реА рд╣реИ
рд╣рдорд╛рд░рд╛ рдЪрдХреНрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CIL рдХрдорд╛рдВрдб рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рд╣реИ, рдЙрдирдХрд╛ HEX рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рдлрд╝рд╛рдЗрд▓ рдСрдлрд╝рд╕реЗрдЯ рдФрд░ рд╡рд┐рд╡рд░рдгред рд╕рднреА рдПрдХ рдЬрдЧрд╣ рдкрд░ред рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ (рдзрдиреНрдпрд╡рд╛рдж
CrazyAlex25 )ред
рдЪрд▓реЛ "__declspec" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рдмреНрд▓реЙрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдмреНрд▓реЙрдХ рдСрдлрд╕реЗрдЯ 0x0001675Aред рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рдВрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдмрд╛рдж, RemoveAt рд╡рд┐рдзрд┐ рдЦреЛрдЬреЗрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдЧрд╛ред рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯ 0x000167BF рд╣реИред HEX рдХреЗ рд╕рдВрдкрд╛рджрдХ
Ctrl + X рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ 0x00 рд▓рд┐рдЦреЗрдВред рд╣рдо рд╕рд╣реЗрдЬреЗрдВрдЧреЗ рдФрд░ рдЬрд╛рдВрдЪреЗрдВрдЧреЗ рдХрд┐ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИред
рдЦрд╛рд▓реА рд▓реВрдк while (num3 < list.Count && !(list[num3] == "where") && !(list[num3] == ":")) { if (list[num3] == A_0.b && num2 < 0) { num2 = num3; } list.RemoveAt(num3); num3--; num3++; }
рдЕрдм рд╣рдо рдирдП рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢рд░реНрдд рдЬреЛрдбрд╝реЗрдВ
if (num3 != 0 && num3 < list.Count - 1)
рддрд╛рд▓рд┐рдХрд╛ рдирдП рдЖрджреЗрд╢реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИред
1119 | ldloc.s | рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ (рд▓рдШреБ рд░реВрдк) рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред |
---|
2C61 | brfalse.s | рдЕрдВрддрд┐рдо рдХрдерди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдорд╛рди рдЧрд▓рдд рд╣реИ, рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдпрд╛ рд╢реВрдиреНрдп рд╣реИред рдиреЛрдЯ : рдпрджрд┐ рдЕрдВрдХ 3 == 0 рд╣реИ, рддреЛ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдПрдВред рдорд╛рди 0x64, рдирд┐рд░реНрджреЗрд╢ 0x000167BF рдкрд░ рдкрддрд╛ рдСрдлрд╝рд╕реЗрдЯ рд╣реИ (рд╕реВрдЪреА рджреЗрдЦреЗрдВ) |
---|
1119 | ldloc.s | рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ (рд▓рдШреБ рд░реВрдк) рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ |
---|
07 | ldloc.1 | рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ 1 рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ |
---|
6FF700000A | callvirt | get_Count () - рдПрдХ рд▓реЗрдЯ-рдмрд╛рдЙрдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ рдкрд░ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЛ рдкреБрд╢ рдХрд░рддрд╛ рд╣реИ |
---|
17 | ldc.i4.1 | рдЗрдВрдЯреНрдпреВ 3 рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ рдкрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди 1 рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ |
---|
59 | рдЙрдк | рдПрдХ рдорд╛рди рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдШрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рд╕реНрдЯреИрдХ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред |
---|
2F55 | bge.s | рдпрд╣ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ (рд▓рдШреБ рд░реВрдк) рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдкрд╣рд▓рд╛ рдореВрд▓реНрдп рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдиреЛрдЯ : рдпрджрд┐ num3> list.Count - 1 рд╣реИ, рддреЛ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдПрдВред рдорд╛рди 0x55 рдирд┐рд░реНрджреЗрд╢ 0x000167BF рд╕реЗ рдкрд╣рд▓реЗ рдкрддрд╛ рдСрдлрд╕реЗрдЯ рд╣реИ |
---|
рд╣рдо рдСрдлрд╕реЗрдЯ 0x0001675A рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЗрди рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдШрдЯрд┐рдд
рдкрд╣рд▓реА рд╢рд░реНрдд while (num3 < list.Count && !(list[num3] == "where") && !(list[num3] == ":")) { if (list[num3] == A_0.b && num2 < 0) { num2 = num3; }
рдЕрдм рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреЗрдХ рдХреЛ "рдЬрд╣рд╛рдВ" рдФрд░ ":" рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд HEX рдХреЛрдб рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ:
07 11 19 17 58 6F F9 00 00 0A 72 A3 1D 00 70 28 70 00 00 0A 2D 3F 07 11 19 17 58 6F F9 00 00 0A 72 92 5E 00 70 28 70 00 00 0A 2D 29
рд╡рд┐рдШрдЯрд┐рдд рдФрд░ рдЬреЛ рдЖрдкрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рд╣реИ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдирдпрд╛ рдЪрдХреНрд░ while (num3 < list.Count && !(list[num3] == "where") && !(list[num3] == ":")) { if (list[num3] == A_0.b && num2 < 0) { num2 = num3; } if (num3 != 0 && num3 < list.Count - 1 && !(list[num3 + 1] == ":") && !(list[num3 + 1] == "where")) { list.RemoveAt(num3); num3--; } num3++; }
рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд▓реЗрдЦрди рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛:
class DATA_READER_DLL_EXPORTS ClassForReadFile { };
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкрд╛рда рдореЗрдВ рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдмреЗрд╢рдХ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЙрдкрдЪрд╛рд░ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ "рдкреНрд░рддрд┐рдмрдВрдз рджрд░рд╛рд░" рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмрд┐рдирд╛, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯ рдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред