{"id":283819,"date":"2017-03-23T17:30:02","date_gmt":"2017-03-23T14:30:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=283819"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=283819","title":{"rendered":"Windows hook: \u043f\u0440\u043e\u0441\u0442\u043e \u043e \u0441\u043b\u043e\u0436\u043d\u043e\u043c"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/011\/68d\/bec\/01168dbec07d45d78e48a598432b9ebe.png\" align=\"right\" alt=\"image\"\/><b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u0443\u043a?<\/b><br \/>  \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u0443\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u043d\u0443\u0436\u0435\u043d? \u0412 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u00abhook\u00bb \u2014 \u043b\u043e\u0432\u0443\u0448\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0445\u0443\u043a\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 Windows \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u2014 \u044d\u0442\u043e \u043b\u043e\u0432\u0443\u0448\u043a\u0430 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u043b\u043e\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0431\u0435\u0440\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043c\u0430\u043d\u0447\u0438\u0432\u044b\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b: \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0441\u0432\u043e\u0439, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e (\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439). <\/p>\n<p>  \u0426\u0435\u043b\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0445\u0443\u043a\u0430 \u0438 \u0435\u0433\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<a name=\"habracut\"><\/a><\/p>\n<blockquote><p><i>\u2014 \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435!<br \/>  \u2014 \u041f\u0440\u043e\u0441\u0442\u043e \u0443 \u0442\u0435\u0431\u044f \u043c\u0430\u043b\u043e \u043e\u043f\u044b\u0442\u0430, \u2013 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0430 \u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0430. \u2013 \u0412 \u0442\u0432\u043e\u0435\u043c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435 \u044f \u0443\u0434\u0435\u043b\u044f\u043b\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u0447\u0430\u0441\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c! \u0412 \u0438\u043d\u044b\u0435 \u0434\u043d\u0438 \u044f \u0443\u0441\u043f\u0435\u0432\u0430\u043b\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e \u0437\u0430\u0432\u0442\u0440\u0430\u043a\u0430!<\/i><\/p><\/blockquote>\n<p>  <b>\u0413\u0434\u0435 \u043c\u043d\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f<\/b><\/p>\n<p>  \u042d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0437\u043a\u043e\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f, \u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e \u043d\u0438\u0445, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043a\u0440\u0430\u0439\u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435. \u041d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0436\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447:<br \/>  \u2022 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e http-\u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0430 \u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0430 \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e\u00bb \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u044b\u0439.<br \/>  \u2022 \u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u0434\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0438.<br \/>  \u2022 \u041d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u0438 \u0443\u0442\u0435\u0440\u044f\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 (\u0434\u0430, \u0438 \u0442\u0430\u043a\u043e\u0435 \u0442\u043e\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f)<\/p>\n<p>  <b>\u041c\u0435\u0442\u043e\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0445\u0443\u043a\u043e\u0432<\/b><\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043e\u0442 \u043e\u0431\u0449\u0438\u0445 \u0444\u0440\u0430\u0437 \u043a \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u0445\u0443\u043a\u043e\u0432. \u041c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0445\u0443\u043a\u0430:<br \/>  \u25cf \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 SetWindowsHookEx. \u042d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043e\u0442\u0442\u043e\u0433\u043e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439, \u043c\u0435\u0442\u043e\u0434. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u043a\u043d\u043e\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u043a\u043d\u043e, \u0449\u0435\u043b\u0447\u043a\u043e\u0432 \u043c\u044b\u0448\u043a\u043e\u0439, \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430). \u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u0443\u043a\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0432\u0432\u043e\u0434).<br \/>  \u25cf \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 DLL. \u0421\u0443\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0438\u043c\u043f\u043e\u0440\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043d\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044d\u0442\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432 \u044d\u0442\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.<br \/>  \u25cf \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 <b>HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows\\AppInit_Dlls<\/b>. \u0412 \u043d\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a DLL, \u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0445\u043e\u0440\u043e\u0448, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 kernel32.dll (\u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e LoadLibrary).<br \/>  \u25cf \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DLL \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0433\u043e-\u0442\u043e \u043c\u044b \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.<\/p>\n<p>  <b>\u041c\u0435\u0442\u043e\u0434 \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/b><\/p>\n<p>  \u0418\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f ThreadStart, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 CreateThread, \u0438\u043c\u0435\u0435\u0442 \u0441\u0445\u043e\u0436\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 LoadLibrary (\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 dll \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u0445\u043e\u0436\u0438). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 LoadLibrary \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DLL \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  1. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 LoadLibrary \u0438\u0437 Kernel32.dll \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u0443\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u043d\u0436\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c DLL.<br \/>  2. \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<br \/>  3. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 ThreadStart \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c LoadLibrary \u0438 \u0435\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442.<br \/>  4. \u041f\u043e\u0442\u043e\u043a \u0438\u0434\u0435\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<br \/>  5. \u041d\u0430\u0448\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 DLL \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 DllMain \u0441 \u0444\u043b\u0430\u0433\u043e\u043c PROCESS_ATTACH. \u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0445\u0443\u043a\u0438 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0430\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0445\u0443\u043a\u0430.<\/p>\n<p>  <b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0445\u0443\u043a\u0430<\/b><\/p>\n<p>  \u041f\u043e\u0434\u0445\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0445\u0443\u043a\u0430, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438:<br \/>  1. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, MessageBox \u0432 user32.dll).<br \/>  2. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/>  3. \u041d\u0430 \u0438\u0445 \u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 JUMP \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439, \u0442. \u0435. \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c.<br \/>  4. \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 JUMP \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442 \u0435\u0433\u043e \u043a \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043e\u0434.<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043d\u044f\u0442\u044c \u043b\u043e\u0432\u0443\u0448\u043a\u0443, \u0432\u0435\u0440\u043d\u0443\u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u0438\u0437 \u043f.2 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e.<br \/>  \u0418\u0442\u0430\u043a, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c DLL \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0445\u0443\u043a \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n<p>  <b>\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/b><\/p>\n<p>  \u041d\u0430\u0448\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0421#. \u041e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 MessageBox. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0445\u0443\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<p>  <code><\/p>\n<pre><code>public partial class MainForm : Form { [DllImport(&quot;user32.dll&quot;, CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);   public MainForm() { InitializeComponent();  this.Text = &quot;ProcessID: &quot; + Process.GetCurrentProcess().Id; }  private void btnShowMessage_Click(Object sender, EventArgs e) { MessageBox(new IntPtr(0), &quot;Hello World!&quot;, &quot;Hello Dialog&quot;, 0); } } <\/code><\/pre>\n<p><\/code><\/p>\n<p>  <b>\u0418\u043d\u044a\u0435\u043a\u0442\u043e\u0440<\/b><\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u044a\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u0418\u043d\u044a\u0435\u043a\u0442\u043e\u0440\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0421++ \u0438 \u0421#. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445? \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u0421# \u2014 \u044d\u0442\u043e \u044f\u0437\u044b\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u2014 \u044d\u0442\u043e \u043c\u0438\u0444, \u043c\u043e\u0436\u043d\u043e :). \u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u0438\u043d\u044a\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 \u0421++:<\/p>\n<p>  <code><\/p>\n<pre><code>#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;cstdio&gt;   int Wait();   int main() {                 \/\/ \u041f\u0443\u0441\u0442\u044c \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u043c \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.                 DWORD processId = 55;                 char* dllName = &quot;C:\\\\_projects\\\\CustomHook\\\\Hooking\\\\Debug\\\\HookDll.dll&quot;;                   \/\/ \u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u0443\u0434\u0430 \u0445\u043e\u0442\u0438\u043c \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.                 printf(&quot;Enter PID to inject dll: &quot;);                 std::cin &gt;&gt; processId;                   \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443.                 HANDLE openedProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);                 if (openedProcess == NULL)                 {                                 printf(&quot;OpenProcess error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                   \/\/ \u0418\u0449\u0435\u043c kernel32.dll                 HMODULE kernelModule = GetModuleHandleW(L&quot;kernel32.dll&quot;);                 if (kernelModule == NULL)                 {                                 printf(&quot;GetModuleHandleW error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                   \/\/ \u0418\u0449\u0435\u043c LoadLibrary (\u0421\u0443\u0444\u0444\u0438\u043a\u0441 A \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0432 ANSI, \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b)                 LPVOID loadLibraryAddr = GetProcAddress(kernelModule, &quot;LoadLibraryA&quot;);                 if (loadLibraryAddr == NULL)                 {                                 printf(&quot;GetProcAddress error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                   \/\/ \u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 LoadLibrary, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e - \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 DLL                 LPVOID argLoadLibrary = (LPVOID)VirtualAllocEx(openedProcess, NULL, strlen(dllName), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);                 if (argLoadLibrary == NULL)                 {                                 printf(&quot;VirtualAllocEx error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                   \/\/ \u041f\u0438\u0448\u0435\u043c \u0431\u0430\u0439\u0442\u044b \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.                 int countWrited = WriteProcessMemory(openedProcess, argLoadLibrary, dllName, strlen(dllName), NULL);                 if (countWrited == NULL)                 {                                 printf(&quot;WriteProcessMemory error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                   \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 LoadLibrary \u0438 \u0430\u0434\u0440\u0435\u0441 \u0435\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430                 HANDLE threadID = CreateRemoteThread(openedProcess, NULL, 0, (LPTHREAD_START_ROUTINE)loadLibraryAddr, argLoadLibrary, NULL, NULL);                   if (threadID == NULL)                 {                                 printf(&quot;CreateRemoteThread error code: %d\\r\\n&quot;, GetLastError());                                 return Wait();                 }                 else                 {                                 printf(&quot;Dll injected!&quot;);                 }                   \/\/ \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a.                 CloseHandle(openedProcess);                   return 0; }   int Wait() {                 char a;                 printf(&quot;Press any key to exit&quot;);                 std::cin &gt;&gt; a;                 return 0; } <\/code><\/pre>\n<p><\/code><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0421#. \u041e\u0446\u0435\u043d\u0438\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u0435\u043d, \u043d\u0435\u0442 \u0431\u0443\u0439\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u043e\u0432 (HANDLE, LPVOID, HMODULE, DWORD, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043f\u043e \u0441\u0443\u0442\u0438, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435).<\/p>\n<p>  <code><\/p>\n<pre><code>public class Exporter { [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle, int processId);   [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern IntPtr GetModuleHandle(string lpModuleName);   [DllImport(&quot;kernel32.dll&quot;, CharSet = CharSet.Ansi, SetLastError = true)] public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);   [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, IntPtr dwSize, AllocationType flAllocationType, MemoryProtection flProtect);   [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, UIntPtr nSize, out IntPtr lpNumberOfBytesWritten);   [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, out IntPtr lpThreadId);   [DllImport(&quot;kernel32.dll&quot;, SetLastError = true)] public static extern Int32 CloseHandle(IntPtr hObject); }  public class Injector { public static void Inject(Int32 pid, String dllPath) { IntPtr openedProcess = Exporter.OpenProcess(ProcessAccessFlags.All, false, pid); IntPtr kernelModule = Exporter.GetModuleHandle(&quot;kernel32.dll&quot;); IntPtr loadLibratyAddr = Exporter.GetProcAddress(kernelModule, &quot;LoadLibraryA&quot;);   Int32 len = dllPath.Length; IntPtr lenPtr = new IntPtr(len); UIntPtr uLenPtr = new UIntPtr((uint)len);   IntPtr argLoadLibrary = Exporter.VirtualAllocEx(openedProcess, IntPtr.Zero, lenPtr, AllocationType.Reserve | AllocationType.Commit, MemoryProtection.ReadWrite);   IntPtr writedBytesCount;   Boolean writed = Exporter.WriteProcessMemory(openedProcess, argLoadLibrary, System.Text.Encoding.ASCII.GetBytes(dllPath), uLenPtr, out writedBytesCount);   IntPtr threadIdOut; IntPtr threadId = Exporter.CreateRemoteThread(openedProcess, IntPtr.Zero, 0, loadLibratyAddr, argLoadLibrary, 0, out threadIdOut);   Exporter.CloseHandle(threadId); } } <\/code><\/pre>\n<p><\/code><\/p>\n<p>  <b>\u0418\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/b><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0445\u0443\u043a\u0438. \u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0421++, \u043f\u043e\u043a\u0430 \u0431\u0435\u0437 \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u043d\u0430 C#. <br \/>  <code><\/p>\n<pre><code> \/\/ dllmain.cpp : Defines the entry point for the DLL application. #include &quot;stdafx.h&quot; #include &lt;Windows.h&gt;  #define SIZE 6  \/\/ \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT); int WINAPI MyMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT);  void BeginRedirect(LPVOID);  pMessageBoxW pOrigMBAddress = NULL; BYTE oldBytes[SIZE] = { 0 }; BYTE JMP[SIZE] = { 0 }; DWORD oldProtect, myProtect = PAGE_EXECUTE_READWRITE;  BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved                                                                                 ) {                 switch (ul_reason_for_call)                 {                                 case DLL_PROCESS_ATTACH:                                                 \/\/ \u0423\u0432\u0435\u0434\u043e\u043c\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443.                                                 MessageBoxW(NULL, L&quot;I hook MessageBox!&quot;, L&quot;Hello&quot;, MB_OK);                                                   \/\/ \u0418\u0434\u0435\u043c \u0430\u0434\u0440\u0435\u0441 MessageBox                                                 pOrigMBAddress = (pMessageBoxW)GetProcAddress(GetModuleHandleW(L&quot;user32.dll&quot;), &quot;MessageBoxW&quot;);                                                 if (pOrigMBAddress != NULL)                                                 {                                                                 BeginRedirect(MyMessageBoxW);                                                 }                                                   break;                                 case DLL_THREAD_ATTACH:                                                 break;                                 case DLL_THREAD_DETACH:                                                 break;                                 case DLL_PROCESS_DETACH:                                                 break;                 }                 return TRUE; }   void BeginRedirect(LPVOID newFunction) {                 \/\/ \u041c\u0430\u0441\u0441\u0438\u0432-\u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430                 BYTE tempJMP[SIZE] = { 0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3 };                 memcpy(JMP, tempJMP, SIZE);                 \/\/ \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438                 DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5);                 \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438                 VirtualProtect((LPVOID)pOrigMBAddress, SIZE, PAGE_EXECUTE_READWRITE, &oldProtect);                 \/\/ \u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0430\u0439\u0442\u044b                 memcpy(oldBytes, pOrigMBAddress, SIZE);                 \/\/ \u041f\u0438\u0448\u0435\u043c 4\u0431\u0430\u0439\u0442\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u0414\u0430, \u043a\u043e\u0434 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 x86                 memcpy(&JMP[1], &JMPSize, 4);                 \/\/ \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445                 memcpy(pOrigMBAddress, JMP, SIZE);                 \/\/ \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430                 VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL); }   int WINAPI MyMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uiType) {                 \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438                 VirtualProtect((LPVOID)pOrigMBAddress, SIZE, myProtect, NULL);                 \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0430\u0439\u0442\u044b (\u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430)                 memcpy(pOrigMBAddress, oldBytes, SIZE);                 \/\/ \u0417\u043e\u0432\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a                 int retValue = MessageBoxW(hWnd, lpText, L&quot;Hooked&quot;, uiType);                 \/\/ \u0421\u043d\u043e\u0432\u0430 \u0441\u0442\u0430\u0432\u0438\u043c \u0445\u0443\u043a                 memcpy(pOrigMBAddress, JMP, SIZE);                 \/\/ \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430                 VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL);                 return retValue; } <\/code><\/pre>\n<p><\/code><\/p>\n<p>  \u041d\u0443 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a. \u0414\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0445\u0443\u043a\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/834\/ab3\/cb6\/834ab3cb6ff941288041f76908f563f0.png\" alt=\"image\"\/><\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/bb8\/d3d\/f94\/bb8d3df94745498c845889f6d65bf7ef.png\" alt=\"image\"\/><\/p>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043d\u0430\u0448\u0435\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0445\u0443\u043a\u0438 \u043d\u0430 C#, \u0442. \u043a. \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438\u043d\u044a\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <a href=\"https:\/\/habrahabr.ru\/users\/nikitam\/\" class=\"user_link\">nikitam<\/a><br \/>  <a href=\"https:\/\/habrahabr.ru\/users\/thoughtsaboutprogramming\/\" class=\"user_link\">ThoughtsAboutProgramming<\/a><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/324718\/\"> https:\/\/habrahabr.ru\/post\/324718\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/011\/68d\/bec\/01168dbec07d45d78e48a598432b9ebe.png\" align=\"right\" alt=\"image\"\/><b>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u0443\u043a?<\/b><br \/>  \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0445\u0443\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u043d\u0443\u0436\u0435\u043d? \u0412 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u00abhook\u00bb \u2014 \u043b\u043e\u0432\u0443\u0448\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0445\u0443\u043a\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 Windows \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u2014 \u044d\u0442\u043e \u043b\u043e\u0432\u0443\u0448\u043a\u0430 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u043b\u043e\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0431\u0435\u0440\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043c\u0430\u043d\u0447\u0438\u0432\u044b\u0435 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b: \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0441\u0432\u043e\u0439, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e (\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439). <\/p>\n<p>  \u0426\u0435\u043b\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0445\u0443\u043a\u0430 \u0438 \u0435\u0433\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-283819","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=283819"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283819\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=283819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=283819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=283819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}