рдЕрдирд▓рд┐рдВрдХрд┐рдВрдЧ Perl2Exe



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

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрд╛рдж рдХреЛ рд╕реНрд╡рдпрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдЖрдЧреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Perl2Exe V11.00 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рд╣рдо рд╕рдВрд▓рдЧреНрди рдирдореВрдирд╛.рдкреНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░реНрдг-exe рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдХрдорд╛рдВрдб perl2exe sample.pl рджрд░реНрдЬ рдХрд░реЗрдВ рдпрд╛ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ perl2.exe рдкрд░ рд╕рд┐рд░реНрдл sample.pl рдЦреАрдВрдЪреЗрдВ рдФрд░ рдбреНрд░реЙрдк рдХрд░реЗрдВред
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ sample.exe рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ:
рдХрд┐рд╕реА рднреА рд╣реЗрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЛ рд▓реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред рд╡реНрдпрд░реНрде рдореЗрдВ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдХреЛрдб рдХреЛ рдПрдХ рдкреИрдХ / рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╣реИред

рд╣рдо рдПрдкреАрдЖрдИ рдореЙрдирд┐рдЯрд░ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдирдореВрдирд╛.exe рдмрдирд╛рддреА рд╣реИ (рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдорд╛рд░реНрдХ рд░реЛрд╕рд┐рдиреЛрд╡рд┐рдЪ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдореЙрдиреАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ CreateFileA, CreateFileW рдЪреБрдиреЗрдВ, Ctrl + H рджрдмрд╛рдПрдВ рдФрд░ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрд╡рд▓реЛрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдлрд┐рд░ рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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



рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдПрдл 5 рджрдмрд╛рддреЗ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдПрдирдбреАрдЯреАрдПрд▓ рд╣рдореЗрдВ рдЖрдВрддреНрд░ рдореЗрдВ рдлреЗрдВрдХрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдореЛрд░реА (Alt + M) рдЦреЛрд▓реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреБрдЫ рдЯреБрдХрдбрд╝рд╛ рджреЗрдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдпрд╣ рдирдореВрдирд╛ рд╣реИ"ред рд╡реЛрдЗрд▓рд╛, рд╣рдо рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рддрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЧрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ (рдХрд╣рддреЗ рд╣реИрдВ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рд╕реНрдореГрддрд┐ рдореЗрдВ)ред
рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдХрд┐рд╕ рдЪрд░рдг рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП CRT-intro рдХреЛ рдЫреЛрдбрд╝реЗрдВ рдФрд░ рдХреЛрдб рдХреЗ рдкрд╣рд▓реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЕрдзреНрдпрдпрди рдкрд░ рдЬрд╛рдПрдВред



рд╣рдо P2x5142.dll рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд░рдирдкрд░реНрд▓ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рдХреЙрд▓ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХрд╛ рд░рд╣рд╕реНрдп рд░рдирдкрд░реНрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВред



WinAPI рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрд╕рд░реНрдЧ perl (Perl_sys_init3, perl_alloc, perl_contruct, perl_parse, perl_run, ...) рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрд╕реБрдХ рдЕрдиреБрдХреНрд░рдо рд╣реИ, рдФрд░, рдПрдХ рдЦреЛрдЬреА рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИред perl_parse рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ perl_parse рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред рдЦреИрд░, рдлрд┐рд░ рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкрд░реНрд▓ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдФрд░ рдПрдХ рдЕрдиреНрдп рдмрдХрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЖрд▓рд╕реНрдп рдФрд░ рдмрд╛рдзрд╛ рд╣реЛрддреА рд╣реИ "рд╣рд╛рдБ, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдмрд╕ рдореЗрдВ рдмреИрдарддреЗ рд╕рдордп рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред"
рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ-рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рд╣реИ (рдЬреЛ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдФрд░ рдпрд╣ рдореЙрд▓реЛрдХ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ, рдореБрдлреНрдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкрддрд╛ рдпреЛрдЧреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛрдЧрд╛)ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреЗ рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЙрд╕ рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рдпрд╛ред
рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдХрд╣реАрдВ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ:



рд▓реЗрдХрд┐рди рдПрдХ рдЪрдХреНрд░ рдХреЗ рдмреАрдЪ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЪрд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлрдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред рдИрдмреЗрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рд╕реНрдЯреИрдХ рдореЗрдВ рд╣рдо рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рд░реБрдЪрд┐ рдХреЗ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдкрддреЗ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдиреЛрдЯрдкреИрдб рдореЗрдВ рд░рд┐рдЯреЗрди рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддрд╛ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЙрд╕ рдкрддреЗ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ рдореЗрдореЛрд░реА рдореЗрдВ P2x5142.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднрд░реА рд╣реБрдИ рдереАред рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдШрдЯрд╛рдПрдВ рдФрд░ рдПрдХ рдСрдлрд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред

рдЕрдм рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рд╣рдо рдирдореВрдирд╛.exe рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрд╡рдпрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧреА, рдЙрд╕ рдХреНрд╖рдг рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ рдЬрдм P2x5142.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдСрдлрд╕реЗрдЯ рд╕реЗ int3 рдХреЗ рд╕рд╛рде рд░рд┐рдЯреЗрди рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЛ рдмрджрд▓реЗрдВ , рдФрд░ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрдВрдк рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдкрддрд╛ рдХрд░рддрд╛ рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛрдб рдХреЛ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдерд╛, "21 рджрд┐рдиреЛрдВ рдореЗрдВ" рдкреБрд╕реНрддрдХ рдХреЗ рдХреБрдЫ рднрд╛рдЧ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреАред рд╡рд╣рд╛рдБ рд╡рд╣ рд╣реИ ред рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ ... рдПрдХ рдЕрдВрдЧреВрдареЗ рдХреА рдореЛрдЯрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИред рд╣рдо LoadLibrary рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Microsoft рдХреЗ рдбреЗрдЯреНрд░реЛрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ MASM рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╢реБрдХреНрд░рд╡рд╛рд░ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рджрд┐рди рдирд╣реАрдВ рд╣реИред рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рд▓реЙрдиреНрдЪрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬреЛ рдирд┐рд▓рдВрдмрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирдореВрдирд╛.exe рдЪрд▓рд╛рдПрдЧрд╛, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдирд╛рдИ рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

//    #include <iostream> #include <Windows.h> #include "injector.hpp" using namespace std; //       //     ,   ,       wstring str2wstr(const char * aIn); int main(int argc, char *argv[]) { //       ,     if(argc != 3) { cout<<"Usage: launcher sample.exe inject.dll"<<endl; return 1; } //   STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; //  ,      // CREATE_SUSPENDED   ,      ""  if(CreateProcess(str2wstr(argv[1]).c_str(), NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi) == 0) { cout<<"Failed to create process"<<endl; return 1; } //    injector injector a; //     (     ) a.set_blocking(false); try { //       a.inject(pi.dwProcessId, str2wstr(argv[2])); } catch(const injector_exception &e) { //  -   ,         e.show_error(); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); TerminateProcess(pi.hProcess, 1); return 1; } //    ResumeThread(pi.hThread); //  ,      CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return 0; } 


рдЪрд▓реЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ

 //   #include <iostream> #include <sstream> #include <fstream> #include <Windows.h> #include "detours.h" #pragma comment(lib, "detours.lib") using namespace std; // ,        static unsigned int i = 0; //   ,     int3 static const DWORD retn_offset = 0xB40E9; static const wstring dump_directory = L"dump"; static const wstring file_prefix = L"src_"; static const wstring perl_dll_name = L"p2x5142.dll"; //  ANSI ?      (   ) HMODULE (WINAPI * real_loadlibrary)(LPCSTR lpFileName) = LoadLibraryA; //  ,     string wstr2str(const wchar_t * aIn); //    void hook() { //  ,       void * base_address = GetModuleHandle(perl_dll_name.c_str()); if(base_address == NULL) return; DWORD pr; //      base_address = reinterpret_cast<void *>(reinterpret_cast<DWORD>(base_address) + retn_offset); //    ,  int3,    VirtualProtect(base_address, 1, PAGE_READWRITE, &pr); CopyMemory(base_address, "\xCC", 1); VirtualProtect(base_address, 1, pr, &pr); } // ,      void dump_data(char * buffer, unsigned int size) { DWORD pr; wstringstream ss; //      ss << dump_directory << L"\\" << file_prefix << i++ << L".txt"; ofstream file(ss.str(), ofstream::binary); file.exceptions(0); if(file.is_open()) { //        VirtualProtect(buffer, size, PAGE_READONLY, &pr); file.write(buffer, size); VirtualProtect(buffer, size, pr, &pr); file.close(); } } // ,     LoadLibraryA HMODULE WINAPI my_loadlibrary(LPCSTR lpFileName) { HMODULE h = real_loadlibrary(lpFileName); //    ,    if ( strstr(lpFileName, wstr2str(perl_dll_name.c_str()).c_str()) && i == 0 ) { i++; hook(); } return h; } //   ,     int3 LONG CALLBACK VEH(PEXCEPTION_POINTERS ExceptionInfo) { if ( //   ,   Eax   ,   Ebx    ExceptionInfo->ContextRecord->Eax > 0 && ExceptionInfo->ContextRecord->Eax < 0xFFFFF && //      -  ,     "" //         ExceptionInfo->ContextRecord->Ebx < 0x77000000 && ExceptionInfo->ContextRecord->Ebx > reinterpret_cast<DWORD>(GetProcessHeap()) ) dump_data(reinterpret_cast<char *>(ExceptionInfo->ContextRecord->Ebx), ExceptionInfo->ContextRecord->Eax); //   Eip            4  // ,  ,   retn ExceptionInfo->ContextRecord->Eip = *reinterpret_cast<DWORD *>(ExceptionInfo->ContextRecord->Esp); ExceptionInfo->ContextRecord->Esp += sizeof(DWORD); //    -    return EXCEPTION_CONTINUE_EXECUTION; } BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved) { if(dwReason == DLL_PROCESS_ATTACH) { //       CreateDirectory(dump_directory.c_str(), NULL); AddVectoredExceptionHandler(1, VEH); //         detours DetourRestoreAfterWith(); DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&reinterpret_cast<PVOID &>(real_loadlibrary), my_loadlibrary); DetourTransactionCommit(); } else if(dwReason == DLL_PROCESS_DETACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&reinterpret_cast<PVOID &>(real_loadlibrary), my_loadlibrary); DetourTransactionCommit(); } return TRUE; } 


рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред



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

рд▓реЗрдЦ рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб: рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

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


All Articles