{"id":426833,"date":"2024-07-22T15:01:40","date_gmt":"2024-07-22T15:01:40","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=426833"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=426833","title":{"rendered":"<span>\u0420\u0435\u0432\u0435\u0440\u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u0441\u0435\u0442\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0434 MS-Windows \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 LED-\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0442\u0430\u0431\u043b\u043e \u0432 \u0441\u0435\u0442\u0438. \u041c\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u044f \u043d\u0430 \u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0436\u0438\u0434\u0430\u044f \u0447\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u044f\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442. \u042f \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0443\u043c\u043a\u0438, \u0432\u0435\u0434\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0435\u0442\u044c, \u0434\u0430 \u0438 \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439. \u0414\u0440\u0443\u0433\u0438\u0445 \u0438\u0434\u0435\u0439 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e. \u041c\u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043a\u043e\u043f\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0433\u0434\u0435 \u043f\u043e\u0438\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 IP \u0438 MAC-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0440\u044f\u0434\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0448\u043b\u0438\u0441\u044c. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0435 \u0438\u043c\u0435\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u044b, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0438 hex-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b, \u0433\u043e\u0442\u043e\u0432\u044f\u0441\u044c \u043a \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0443\u0436\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<p><strong>\u0412\u0410\u0416\u041d\u041e:<\/strong> \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0430, \u044f\u0437\u044b\u043a\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0434\u043b\u044f x86, \u0421\u0438, \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u041d\u0415 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u0438 \u041d\u0415 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0417\u0434\u0435\u0441\u044c \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u0431\u044b \u0432\u044b. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043b\u0435\u0436\u0438\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/h2>\n<p>\u0412 \u0440\u0443\u043a\u0438 \u043c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b <strong>.zip<\/strong> \u0430\u0440\u0445\u0438\u0432 \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<ul>\n<li>\n<p><strong>UNICONFIG.EXE<\/strong> \u2014\u00a0<em>\u041a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/em>. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 &#171;<em>\u041f\u043e\u0438\u0441\u043a<\/em>&#171;.<\/p>\n<\/li>\n<li>\n<p><strong>TESTCONN.EXE<\/strong> \u2014 <em>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/em>. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441 \u0445\u043e\u0441\u0442\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>UNICONFIG.INI<\/strong>, <strong>TESTCONN.INI<\/strong> \u2014 <em>\u0424\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/em><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/688\/167\/32b\/68816732bcecedf7e768decef2966ebf.png\" alt=\"\u041e\u043a\u043d\u043e UNICONFIG.EXE \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435\" title=\"\u041e\u043a\u043d\u043e UNICONFIG.EXE \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435\" width=\"1038\" height=\"752\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/688\/167\/32b\/68816732bcecedf7e768decef2966ebf.png\"\/><\/p>\n<div><figcaption>\u041e\u043a\u043d\u043e UNICONFIG.EXE \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439: \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0445 \u0432 \u0433\u0440\u0443\u043f\u043f\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u043b\u0435\u0439 \u0432\u0432\u043e\u0434\u0430, \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0440\u044f\u0434 \u0432\u043a\u043b\u0430\u0434\u043e\u043a. \u041c\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 C\/C++ \u0438 WinApi, \u0441\u0441\u044b\u043b\u0430\u044f\u0441\u044c \u043d\u0430 \u043c\u0430\u043b\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 (\u0432\u0441\u0435\u0433\u043e 441 \u041a\u0431). \u041c\u043d\u0435 \u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0432\u0435\u0434\u044c \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043d\u043e \u0438 \u0434\u043e\u043b\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 <code>CreateWindowXXX()<\/code>. \u041f\u0440\u0430\u0432\u0434\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043c\u043e\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0432\u043e\u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.cyberforum.ru\/beta-testing\/thread1430083.html?ysclid=lysiepvmnc359608885\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>. \u041d\u043e \u0432\u0441\u0451 \u0436\u0435 \u044f \u0441\u043a\u043b\u043e\u043d\u044f\u043b\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043b\u0438\u0431\u043e \u043d\u0430 Delphi, \u043b\u0438\u0431\u043e \u043d\u0430 C# \u0438 WinForms. \u0410 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0440\u0430.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434<\/h2>\n<p>objdump \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u043a pei-i386. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 32-\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 i386-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445. \u041f\u043e\u0440\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0431\u0435\u0433\u043b\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u043b\u0438 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043d\u0435\u0442: \u043f\u0430\u043a\u0435\u0440\u044b \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f ILT \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e IAT \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u0438\u0448\u044c \u043f\u0430\u0440\u0443 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0438\u0445.<\/p>\n<pre><code class=\"bash\">$ objdump -x uniconfig.exe          ...          DLL Name: kernel32.dll         vma:  Hint\/Ord Member-Name Bound-To         16ff79      0  GetProcAddress         16ff8a      0  GetModuleHandleA         16ff9d      0  LoadLibraryA          ...          DLL Name: user32.dll         vma:  Hint\/Ord Member-Name Bound-To         170277      0  LoadStringW          DLL Name: user32.dll         vma:  Hint\/Ord Member-Name Bound-To         170285      0  CreateWindowExW          ...          DLL Name: wsock32.dll         vma:  Hint\/Ord Member-Name Bound-To         17035b      0  WSACleanup          ...<\/code><\/pre>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u043e \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0418\u0437 kernel32.dll \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f <code>GetProcAddress()<\/code>, <code>GetModuleHandleA()<\/code> \u0438  <code>LoadLibraryA()<\/code>. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438\u0437 kernel32.dll. \u042f \u043e\u0436\u0438\u0434\u0430\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c <code>CloseHandle()<\/code>, \u0438\u043b\u0438 <code>GetCommandLineX()<\/code> \u0441 <code>GetStartupInfoX()<\/code>, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u044b \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0418\u0437 user32.dll \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>LoadStringW()<\/code> \u0438 <code>CreateWindowExW()<\/code>. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 <code>DestroyWindow()<\/code> \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e <code>RegisterClassX()<\/code>, <code>UnregisterClassX()<\/code>, <code>DefWindowProcX()<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0418\u0437 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u0439-\u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0440\u0430. \u0410 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438 <code>pushad<\/code>:<\/p>\n<pre><code class=\"assembly\">0056F001 | 60                       | pushad                                   | 0056F002 | E8 03000000              | call uniconfig.56F00A                    | 0056F007 | E9 EB045D45              | jmp 45B3F4F7                             | 0056F00C | 55                       | push ebp                                 | 0056F00D | C3                       | ret                                      | 0056F00E | E8 01000000              | call uniconfig.56F014                    | 0056F013 | EB 5D                    | jmp uniconfig.56F072                     | 0056F015 | BB EDFFFFFF              | mov ebx,FFFFFFED                         | 0056F01A | 03DD                     | add ebx,ebp                              |<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u2014 \u0444\u0430\u0439\u043b \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u043a\u0435\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043f\u0430\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 <code>pushad<\/code>\/<code>popad<\/code> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432.<\/p>\n<h2>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430<\/h2>\n<p>\u041f\u0440\u043e\u0431\u0435\u0436\u0430\u0432\u0448\u0438\u0441\u044c \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0432\u043d\u0438\u0437 \u043f\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u044f \u043d\u0430\u0448\u0451\u043b \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>popad<\/code>. \u0421\u0440\u0430\u0437\u0443 \u0437\u0430 \u043d\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u0431\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 1, \u043b\u0438\u0431\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u043a \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<pre><code class=\"assembly\">0056F3AF | 61                       | popad                                    | 0056F3B0 | 75 08                    | jne uniconfig.56F3BA                     | 0056F3B2 | B8 01000000              | mov eax,1                                | 0056F3B7 | C2 0C00                  | ret C                                    | 0056F3BA | 68 A4BD5100              | push uniconfig.51BDA4                    | 0056F3BF | C3                       | ret                                      |<\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Scylla \u044f \u043d\u0430\u0448\u0451\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u0441\u0434\u0430\u043c\u043f\u0438\u043b \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/h2>\n<p>\u0414\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u042d\u0442\u043e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 99.9% \u0431\u044b\u043b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041c\u043e\u0438\u043c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0440\u0430\u043d\u0435\u0435, \u0431\u044b\u043b\u0438 Delphi \u0438 C#. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043b\u0435\u0434\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u2014 \u0431\u0443\u0434\u044c-\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f C# \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0432\u0435\u0434\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0431\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u043f\u0438\u0441\u044c mscoree.dll \u0441 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 <code>_CorExeMain()<\/code>, \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 .NET \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. CLR \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>Ghidra \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u0430\u043a &#171;<em>borlanddelphi<\/em>&#187; \u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0435 \u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0439. \u0412 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e\u0438\u0441\u043a\u0430\u043b \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0418\u0441\u043a\u0430\u043b \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a, \u043a\u0430\u043a &#171;<em>delphi<\/em>&#171;, &#171;<em>borland<\/em>&#171;, &#171;<em>pascal<\/em>&#171;, &#171;<em>(c)<\/em>&#187; \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u0445. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"bash\">$ strings uniconfig_dump_SCY.exe | grep \"Borland\" FastMM Borland Edition (c) 2004 - 2008 Pierre le Riche \/ Professional Software Development<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/pleriche\/FastMM4?ysclid=lysk3u6otg955009758\" rel=\"noopener noreferrer nofollow\">FastMM<\/a> \u2014 \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Delphi. \u042d\u0442\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Delphi.<\/p>\n<h2>\u041f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043a\u043d\u043e\u043f\u043e\u043a<\/h2>\n<p>\u041a\u043d\u043e\u043f\u043a\u0438 \u0432 Delphi \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 <code>TButton<\/code>. \u0423 <code>TButton<\/code> \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>OnClick()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b-\u043a\u043e\u043b\u0431\u044d\u043a\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u0434\u0430\u0431\u044b \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u0432\u043d\u0435. \u0421\u0434\u0435\u043b\u0430\u0432 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u043e\u043a \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u043c &#171;<em>click<\/em>&#171;, &#171;<em>clicked<\/em>&#187; \u0438 &#171;<em>press<\/em>&#187; \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445, \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0447\u0442\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"bash\">$ strings -tx uniconfig_dump_SCY.exe | grep \"Click\"    ...    f5b10 Button3Click   f5b23 Button5Click   f5b36 Button4Click   f5c51 Button3Click   f5c8d Button5Click   f5cc9 Button4Click   f7777 Button3Click    ...<\/code><\/pre>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438 \u0438\u043c\u0451\u043d \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f PascalCase. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u043e\u043a (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u2014 &#171;<em>Button5Click<\/em>&#171;), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0451, \u0447\u0435\u0440\u0435\u0434\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd2\/511\/41f\/fd251141fef46a81b849b48d44b4d1e8.png\" alt=\"\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 &quot;Button5Click&quot;\" title=\"\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 &quot;Button5Click&quot;\" width=\"691\" height=\"41\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd2\/511\/41f\/fd251141fef46a81b849b48d44b4d1e8.png\"\/><\/p>\n<div><figcaption>\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 &#171;Button5Click&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438\u0434\u0451\u0442 \u0431\u0430\u0439\u0442 0x0C. \u0417\u043d\u0430\u044f, \u0447\u0442\u043e Delphi \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u0445 \u0432 \u0447\u0438\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u043e\u0432\u043d\u043e 12 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432). \u0417\u0430 \u043f\u043e\u043b\u0435\u043c \u0434\u043b\u0438\u043d\u044b \u0438\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u044f, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0430\u0439\u0442:<\/p>\n<p><code>13 00 8C 6D 4F 00<\/code> <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u0435\u0439 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u0431\u0430\u0439\u0442\u0430 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 <code>int<\/code>. \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0431\u0430\u0439\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0432 \u0438\u0445, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0447\u0438\u0441\u043b\u043e <code>0x004F6D8C<\/code>. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 .text. \u041f\u0435\u0440\u0435\u0439\u0434\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u043b\u043e\u0433 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b:<\/p>\n<pre><code class=\"assembly\">004F6D8C | 55                       | push ebp                                 | 004F6D8D | 8BEC                     | mov ebp,esp                              | 004F6D8F | 33C9                     | xor ecx,ecx                              | 004F6D91 | 51                       | push ecx                                 |<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043d\u0443\u0432 \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u044f \u0443\u0431\u0435\u0434\u0438\u043b\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b. \u0412\u044b\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0438\u043c\u0435\u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043a\u043d\u043e\u043f\u043e\u043a \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435:<\/p>\n<pre><code>+-------+-------------+--------~ | \u0410\u0434\u0440\u0435\u0441 | \u0414\u043b\u0438\u043d\u0430 \u0438\u043c\u0435\u043d\u0438 | \u0418\u043c\u044f +-------+-------------+--------~         ^             ^        ^         |             |        |         4 \u0431\u0430\u0439\u0442\u0430       5 \u0431\u0430\u0439\u0442   N \u0431\u0430\u0439\u0442<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043a\u043d\u043e\u043f\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u0447\u0435\u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 gdb \u043f\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<\/p>\n<pre><code class=\"cpp\">    \/* UNICONFIG.EXE \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442 *\/     static const uint8_t raw[] = { ... };      \/* \u0421\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b (ButtonXXClick) *\/     const char part1[] = \"Button\";     const char part2[] = \"Click\";      for (const uint8_t *rawp = raw; rawp &lt; raw + sizeof(raw); rawp++) {         \/* \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 *\/         if (memcmp(rawp, part1, sizeof part1 - 1))             continue;          \/* \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 *\/         if (memcmp(rawp + sizeof(part1) + 1, part2, sizeof part2 - 1))             if (memcmp(rawp + sizeof(part1), part2, sizeof part2 - 1))                 continue;                  \/* \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441, \u0435\u0441\u043b\u0438 \u0432 .text - \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c *\/         const uint32_t addr = *(uint32_t *)(rawp - 5);         if ((addr >= 0x401000) &amp;&amp; (addr &lt;= 0x51b000))             printf(\"b *0x%\"PRIx32\"\\n\", addr);     }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u0437 \u043f\u043e\u0434 gdb, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u0448\u0435, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043b\u044e\u0431\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438. \u042f \u043d\u0430\u0436\u0430\u043b \u043d\u0430 \u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0438\u0441\u043a\u0430.<\/p>\n<pre><code>(gdb) c Continuing. [Thread 22696.0x8764 exited with code 0] [Switching to Thread 22696.0x6004]  Thread 1 hit Breakpoint 59, 0x0050b61c in ?? () (gdb)<\/code><\/pre>\n<p>\u041f\u043e\u0442\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 <code>0x0050b61c<\/code>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a \u043a\u043d\u043e\u043f\u043a\u0435 &#171;<em>\u041f\u043e\u0438\u0441\u043a<\/em>&#171;.<\/p>\n<h2>\u041a\u043e\u043b\u0431\u044d\u043a<\/h2>\n<pre><code class=\"cpp\">int __fastcall search_button_callback(int a1, int a2) {   int result; \/\/ eax   int v5; \/\/ edx   int v6; \/\/ eax    result = sub_50E760(a1, a2 != 0, 1, a1, a2);   if ( (_BYTE)result )   {     if ( *off_51EB74 )     {       v6 = sub_50B538(a1, a2 != 0);       return sub_4F34C0(v6);     }     else     {       LOBYTE(v5) = a2 != 0;       return sub_50B1B4(a1, v5);     }   }   return result; }<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043a\u043e\u043b\u0431\u044d\u043a \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u0432\u0435\u0436\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 IDA Pro. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 <code>sub_50E760()<\/code>, \u043e\u0442 \u0435\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0435\u043b\u0430. \u0414\u0430\u043b\u0435\u0435, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e <code>off_51EB74<\/code>.<\/p>\n<p><code>off_51EB74<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0430\u0439\u0442 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .data. \u042d\u0442\u043e\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0430\u0439\u0442 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u0433\u0434\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0431\u043b\u043e\u043a <code>if<\/code>, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443, <em>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442<\/em>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c (\u0444\u043b\u0430\u0433), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0440\u0435\u0436\u0438\u043c\u0430. \u0412\u043f\u0440\u043e\u0447\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u043e\u043b\u0438, \u0432\u0430\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430. \u0418\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u2014 \u043b\u0438\u0431\u043e \u043f\u043e\u0438\u0441\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 <code>sub_50E760()<\/code>, \u043b\u0438\u0431\u043e \u0432 <code>sub_50B1B4()<\/code>, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 <code>else<\/code> \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 <code>else<\/code>. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u043f\u043e\u0442\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0448\u0451\u043b \u0434\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<h2>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439<\/h2>\n<p>\u042f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b <code>sub_50B1B4()<\/code> \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0435 <code>net_search()<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u043b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">int __fastcall net_search(int a1, int a2) {   if ( (unsigned __int8)sub_50B180(a1, a2) )   {     (*(void (__fastcall **)(_DWORD))(**(_DWORD **)(*(_DWORD *)(a1 + 1071044) + 4) + 8))(*(_DWORD *)(*(_DWORD *)(a1 + 1071044)                                                                                                   + 4));     sub_4D35D4(*(_DWORD *)(a1 + 1071044));     sub_50B1F8(a1);   }   return sub_4D3538(*(_DWORD *)(a1 + 1071044)); }<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0435\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0438\u0437 \u0442\u0440\u0451\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432) \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 <code>sub_50B180()<\/code> \u0432\u0435\u0440\u043d\u0451\u0442 0. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0432\u043d\u0443\u0442\u0440\u044c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0435\u044e \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u044f \u043d\u0430\u0448\u0451\u043b \u0442\u0430\u043a\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u0430\u043a <code>WSAStartup()<\/code>, <code>WSACleanup()<\/code>, <code>socket()<\/code>, <code>setsockopt()<\/code>, <code>shutdown()<\/code>, <code>closesocket()<\/code>. \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043a\u0435\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0441\u043e\u043a\u0435\u0442 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043e\u043f\u0446\u0438\u0438.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <code>sub_4D35D4()<\/code> \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0438\u0441\u044c \u0432\u044b\u0437\u043e\u0432\u044b <code>htons()<\/code>, <code>sendto()<\/code>, <code>select()<\/code>, <code>recvfrom()<\/code>, <code>inet_ntoa()<\/code>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430, \u0432\u0435\u0434\u044c \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0438 \u043f\u0440\u0438\u0451\u043c\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0441\u0435\u0442\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c UDP \u0441\u043e\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p><code>sub_50B1F8()<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430 Delphi \u2014 <code>TStringGrid::SetCells()<\/code>, <code>IntToStr()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0441\u044f\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430 \u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/p>\n<p><code>sub_4D3538()<\/code>, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>shutdown()<\/code>, <code>closesocket()<\/code> \u0438 <code>WSACleanup()<\/code>, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u044b\u0437\u043e\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>a1<\/code> \u043f\u0435\u0440\u0435\u0434 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 <code>if<\/code>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043d \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e. \u0418\u0442\u043e\u0433\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043e\u043a\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0441\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0432\u043d\u043e\u0441\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u044f \u0434\u0430\u043b \u0438\u043c\u0435\u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u043c, <code>net_search()<\/code> \u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435.<\/p>\n<pre><code class=\"cpp\">int __fastcall net_search(int a1, int a2) {   if ( (unsigned __int8)search_init(a1, a2) )   {     (*(void (__fastcall **)(_DWORD))(**(_DWORD **)(*(_DWORD *)(a1 + 1071044) + 4) + 8))(*(_DWORD *)(*(_DWORD *)(a1 + 1071044)                                                                                                   + 4));     search_perform(*(_DWORD *)(a1 + 1071044));     update_table(a1);   }   return network_deinit(*(_DWORD *)(a1 + 1071044)); }<\/code><\/pre>\n<h2>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0442\u044c\u044e<\/h2>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f <code>search_init()<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0435\u0451 \u043b\u043e\u0433\u0438\u043a\u0438. \u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043b \u0435\u0451 <code>search_init_internal()<\/code>.<\/p>\n<pre><code class=\"cpp\">int __fastcall search_init_internal(int a1) {   int v2; \/\/ ebx   struct WSAData v4; \/\/ [esp+0h] [ebp-198h] BYREF    v2 = *(unsigned __int8 *)(a1 + 8);   if ( !(_BYTE)v2 )   {     sub_404CAC((int)&amp;v4, 400, 0);     if ( j_WSAStartup(0x101u, &amp;v4) )     {       sub_407894((volatile __int32 *)(a1 + 16), aErrorStartWsa_0);     }     else if ( (unsigned __int8)sub_4D3934(a1) )     {       *(_BYTE *)(a1 + 8) = 1;       LOBYTE(v2) = 1;     }   }   return v2; }<\/code><\/pre>\n<p>\u0421 \u0445\u043e\u0434\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432 <code>WSAStartup()<\/code>, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <code>sub_404CAC()<\/code>, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 400 \u0438 0. \u042d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <code>memset()<\/code>, \u0433\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438. \u041d\u043e \u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0443\u0441\u043e\u043c\u043d\u0438\u043b\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043e\u0440\u0438\u0438, \u0432\u0435\u0434\u044c <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/winsock\/nf-winsock-wsastartup\" rel=\"noopener noreferrer nofollow\">MSDN<\/a> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>lpWSAData<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <em>\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c<\/em>, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u041a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 <code>sub_404CAC()<\/code> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 FPU \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0447\u0442\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435. \u042f \u0443\u0432\u0438\u0434\u0435\u043b \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c: \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0430 \u043f\u0435\u0440\u0432\u044b\u0439 (\u0430\u0434\u0440\u0435\u0441) \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0438\u043c \u043f\u043b\u044e\u0441\u043e\u043c \u043a \u0442\u0435\u043e\u0440\u0438\u0438 \u043f\u0440\u043e <code>memset()<\/code>. \u042f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b.<\/p>\n<pre><code>(gdb) x\/10wx 0x19f190 0x19f190:       0x00000001      0x766010a8      0x380107a7      0x00000047 0x19f1a0:       0x00000009      0x00000004      0x0000000d      0x00000001 0x19f1b0:       0x00000001      0x00000004 (gdb) c Continuing.  Thread 1 hit Breakpoint 2, 0x004d3a40 in ?? () (gdb) x\/10wx 0x19f190 0x19f190:       0x00000000      0x00000000      0x00000000      0x00000000 0x19f1a0:       0x00000000      0x00000000      0x00000000      0x00000000 0x19f1b0:       0x00000000      0x00000000 (gdb)<\/code><\/pre>\n<p>\u0418 \u0434\u0430, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u043c\u0443\u0441\u043e\u0440 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u043d\u0443\u043b\u044f\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>WSAStartup()<\/code> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 0x101. \u041e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 MSDN, \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0441\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 MS-Windows, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0432\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u043a\u0440\u043e\u0441 <code>MAKEWORD()<\/code>, \u0438\u043b\u0438 \u0435\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433 \u0434\u043b\u044f Delphi.<\/p>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 &#171;<em>Error start WSA!<\/em>&#187; \u0432 \u042e\u043d\u0438\u043a\u043e\u0434\u0435. \u041d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443, \u043d\u043e \u0434\u0430\u0436\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0432 \u0442\u0438\u043f\u044b \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, IDA Pro \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0451 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 L&#187;<em>\u0421\u0442\u0440\u043e\u043a\u0430<\/em>&#171;, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043a\u0443.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>sub_4D3934()<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u0422\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u043a\u0430\u043a <code>int<\/code>, \u0447\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>a1<\/code> \u044d\u0442\u043e \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. <\/p>\n<pre><code class=\"cpp\">  v2 = *(unsigned __int8 *)(a1 + 8);    ...    *(_BYTE *)(a1 + 8) = 1;<\/code><\/pre>\n<p>\u0412 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0451 \u043f\u043e\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 1 \u0431\u0430\u0439\u0442 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 8. \u0423\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0438\u043f (\u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0441\u0442\u0430), \u043b\u0438\u0431\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438.<\/p>\n<pre><code class=\"assembly\">  movzx ebx, byte ptr [esi+8]    ...    mov byte ptr [esi+8], 1<\/code><\/pre>\n<p>IDA Pro \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0438 \u0441\u0434\u0432\u0438\u0433\u0430\u0445 \u043f\u043e\u043b\u0435\u0439. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0437\u0430\u0442\u0435\u043c \u041f\u041a\u041c \u0438 &#171;<em>Create new struct type&#8230;<\/em>&#171;. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u043f\u043e\u043b\u0435\u0439, \u0447\u0442\u043e \u044f \u043d\u0430\u0445\u043e\u0436\u0443 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0434\u0430\u0442\u044c \u0435\u0439 \u0438\u043c\u044f <code>Net_Storage<\/code>.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>a1<\/code> \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 8 \u043d\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0442\u0435\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c \u0432\u044b\u0437\u043e\u0432\u0430 <code>WSAStartup()<\/code> (\u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>WSADATA<\/code> \u043d\u0443\u043b\u044f\u043c\u0438). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>sub_4D3934()<\/code>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0442\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u043d\u0435 \u043d\u043e\u043b\u044c, \u043f\u043e\u043b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>a1<\/code> \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 8 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1<\/p>\n<\/li>\n<\/ol>\n<p>\u0411\u0430\u0439\u0442 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 8 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0431\u0443\u043b\u0435\u0432\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>TRUE<\/code> \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0436\u043c\u0451\u0442 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0440\u0438\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u0446\u0438\u0444\u0440 \u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0430\u043a\u0443\u044e \u0447\u0438\u0441\u0442\u0443\u044e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e.<\/p>\n<pre><code class=\"cpp\">BOOL __fastcall search_init_internal(struct Net_Storage *storage) {   BOOL _is_initialized; \/\/ ebx   struct WSAData wsadata; \/\/ [esp+0h] [ebp-198h] BYREF    _is_initialized = storage->is_initialized;   if ( !_is_initialized )   {     xmemset(&amp;wsadata, 400, 0);     if ( j_WSAStartup(MAKEWORD(1, 1), &amp;wsadata) )     {       handle_error(&amp;storage->error_data, aErrorStartWsa_0);     }     else if ( (unsigned __int8)sub_4D3934(storage) )     {       storage->is_initialized = TRUE;       LOBYTE(_is_initialized) = TRUE;     }   }   return _is_initialized; }<\/code><\/pre>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u043a\u0435\u0442\u0430<\/h2>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 <code>sub_4D3934()<\/code>.<\/p>\n<pre><code class=\"cpp\">int __fastcall sub_4D3934(struct Net_Storage *storage) {   int v2; \/\/ ebx   int v3; \/\/ eax   char optval[4]; \/\/ [esp+0h] [ebp-10h] BYREF    v2 = 0;   *(_DWORD *)optval = 1;   v3 = j_socket(2, 2, 17);   storage->field_C = v3;   if ( v3 == -1 )   {     j_WSACleanup();     handle_error(&amp;storage->error_data, aErrorInCreatin_0);   }   else if ( j_setsockopt(storage->field_C, 0xFFFF, 32, optval, 1) == -1 )   {     sub_4D3AAC((int)storage);     handle_error(&amp;storage->error_data, aErrorSetSocket_0);   }   else   {     LOBYTE(v2) = 1;   }   return v2; }<\/code><\/pre>\n<p>\u0421 \u0445\u043e\u0434\u0443 \u0432\u0438\u0434\u0435\u043d \u0432\u044b\u0437\u043e\u0432 <code>socket()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c \u0441\u043e\u043a\u0435\u0442. \u041c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432. \u041e\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u043a <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/winsock2\/nf-winsock2-socket\" rel=\"noopener noreferrer nofollow\">MSDN<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b, \u0432\u044b\u0437\u043e\u0432 \u0441\u0442\u0430\u043b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u043e.<\/p>\n<pre><code class=\"cpp\">v3 = j_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043e\u043a\u0435\u0442 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 <code>AF_INET<\/code> (IPv4), \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0434\u0430\u0442\u0430\u0433\u0440\u0430\u043c\u043c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b UDP.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043a\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0443 L&#187;<em>Error in creating socket<\/em>&#171;, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 <code>setsockopt()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043d\u0435\u043a\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u043e\u043a\u0435\u0442\u0430. \u041f\u0440\u0438\u0432\u0435\u0434\u044f \u0432\u044b\u0437\u043e\u0432 \u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0432\u0438\u0434, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">else if ( j_setsockopt(storage->field_C, SOL_SOCKET, SO_BROADCAST, optval, 1) == -1 )<\/code><\/pre>\n<p><code>SOL_SOCKET<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u043e\u043a\u0435\u0442\u043e\u0432. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u044f <code>SO_BROADCAST<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u0440\u043e\u0430\u0434\u043a\u0430\u0441\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u0438\u0431\u043e \u043d\u0430 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/winsock\/nf-winsock-setsockopt\" rel=\"noopener noreferrer nofollow\">MSDN<\/a>, \u043b\u0438\u0431\u043e \u043d\u0430 <a href=\"https:\/\/www.man7.org\/linux\/man-pages\/man7\/socket.7.html\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u0430 \u043f\u043e socket()<\/a>. \u0428\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0412 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u043c\u0430\u0441\u0441\u0438\u0432 <code>optval<\/code> \u0438\u0437 <code>char[4]<\/code> \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a <code>DWORD<\/code> \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0414\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043e\u043f\u044f\u0442\u044c 4-\u0445 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 <code>BOOL<\/code>.<\/p>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>sub_4D3AAC()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432\u044b <code>shutdown()<\/code>, <code>closesocket()<\/code> \u0438 <code>WSACleanup()<\/code>, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044f \u0441\u043e\u043a\u0435\u0442 \u0438 \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 L&#187;<em>Error set socket option<\/em>&#171;.<\/p>\n<pre><code class=\"cpp\">BOOL __fastcall net_create_socket(struct Net_Storage *storage) {   BOOL ret; \/\/ ebx   SOCKET socket; \/\/ eax   BOOL enable_brodcast; \/\/ [esp+0h] [ebp-10h] OVERLAPPED BYREF    ret = FALSE;   enable_brodcast = TRUE;   socket = j_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);   storage->socket = socket;   if ( socket == INVALID_SOCKET )   {     j_WSACleanup();     handle_error(&amp;storage->error_data, aErrorInCreatin_0);   }   else if ( j_setsockopt(storage->socket, SOL_SOCKET, SO_BROADCAST, &amp;enable_brodcast, 1) == SOCKET_ERROR )   {     network_deinit(storage);     handle_error(&amp;storage->error_data, aErrorSetSocket_0);   }   else   {     LOBYTE(ret) = TRUE;   }   return ret; }<\/code><\/pre>\n<p>\u0418\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442 <code>search_init()<\/code> \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0442\u044c\u044e \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0440\u0430\u043d\u0435\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c \u0432\u044b\u0437\u043e\u0432\u0430 <code>WSAStartup()<\/code>. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043e\u043a\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 <code>socket()<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b UDP. \u0415\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0446\u0438\u044e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0440\u043e\u0430\u0434\u043a\u0430\u0441\u0442 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u043d\u0435 \u0441\u043e\u043a\u0435\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>setsockopt()<\/code>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442, \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u0432\u044b\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438\u0441\u044c, \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e\u043b\u0435 <code>is_initialized<\/code> \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>TRUE<\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>TRUE<\/code><\/p>\n<\/li>\n<\/ol>\n<h2>\u0421\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430<\/h2>\n<p>\u0421 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0438, <code>search_perform()<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0431\u044b\u043b\u0430 \u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u043d\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">...  if ( storage->is_initialized )   {     sub_4D3BD8((int)_storage, 0xFFFF, 0, 0xFFFFu, -1);     if ( sub_4D3B88(_storage, (char *)&amp;_storage[410].socket) )     {       j_Sleep_0(0xC8u);        ...<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0430, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <code>sub_4D3BD8()<\/code> \u0438 <code>sub_4D3B88()<\/code>. \u041e\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043b\u0438 \u0431\u043b\u043e\u043a <code>if<\/code> \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u0435\u0440\u0432\u044b\u043c \u0436\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u0434\u0451\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430 0xC8 \u0438\u043b\u0438 \u0436\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434.<\/p>\n<pre><code class=\"cpp\">int __fastcall sub_4D3BD8(int a1, __int16 a2, __int16 a3, unsigned __int16 a4, int a5) {   int result; \/\/ eax    *(_DWORD *)(a1 + 10284) = 0;   xmemset((void *)(a1 + 8212), 2070, 0);   *(_DWORD *)(a1 + 8212) = 779192668;   *(_WORD *)(a1 + 8216) = 22;   *(_WORD *)(a1 + 8218) = a3;   *(_WORD *)(a1 + 8220) = -1;   result = a5;   *(_DWORD *)(a1 + 8222) = a5;   *(_DWORD *)(a1 + 8226) = a4;   *(_WORD *)(a1 + 8228) = a2;   *(_DWORD *)(a1 + 8230) = -1;   return result; }<\/code><\/pre>\n<p>\u042f \u0435\u0449\u0451 \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u0438\u043f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>a1<\/code>, \u043d\u043e \u0443\u0436\u0435 \u0443\u0432\u0438\u0434\u0435\u043b \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0451 \u043f\u043e\u043b\u0435\u0439. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u0441\u0430\u043c\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u043c\u0435\u043b\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u0447\u0435\u043c \u0441\u0434\u0432\u0438\u0433\u0438 \u043d\u0430 8000+ \u0431\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u0421\u0440\u0430\u0437\u0443 \u0437\u0430\u043c\u0435\u0442\u0435\u043d \u0432\u044b\u0437\u043e\u0432 <code>xmemset()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0443\u043b\u044f\u043c\u0438 2070 \u0431\u0430\u0439\u0442 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 8212 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u043e \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432, \u043d\u043e \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>DWORD<\/code>, \u043d\u043e \u0438 <code>WORD<\/code>. \u0413\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 <code>Net_Storage<\/code>. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0432\u0438\u0433 \u0443 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u044b\u043b \u0440\u043e\u0432\u043d\u043e 8212 \u0431\u0430\u0439\u0442 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430, \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 <code>Net_Storage<\/code> \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f <code>char padding[8212 - 0x14]<\/code>, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b \u0441\u0430\u043c\u043e \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<code>Net_Buffer<\/code> (\u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438 \u0441\u0434\u0432\u0438\u0433\u0438 \u043f\u043e\u043b\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 <code>sub_4D3BD8()<\/code>):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/78d\/1c9\/8bf\/78d1c98bf5bd2fb5296afd7513b06075.png\" alt=\"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0438\u0445 \u043f\u043e\u043b\u044f\u043c\" title=\"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0438\u0445 \u043f\u043e\u043b\u044f\u043c\" width=\"790\" height=\"503\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78d\/1c9\/8bf\/78d1c98bf5bd2fb5296afd7513b06075.png\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0438\u0445 \u043f\u043e\u043b\u044f\u043c<\/figcaption><\/div>\n<\/figure>\n<p><code>field_E<\/code> \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0431\u0443\u0444\u0435\u0440\u0430, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 (\u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0438 \u043d\u0438\u0436\u043d\u0435\u0433\u043e), \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">  storage->buffer.field_E = a4;   HIWORD(storage->buffer.field_E) = a2;<\/code><\/pre>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043a\u0440\u044b\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0430 <code>and<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0434\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438\u0436\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e:<\/p>\n<pre><code class=\"assembly\">  mov edx, [ebp+arg_4]   and edx, 0FFFFh    ...    mov [ecx+4], edx<\/code><\/pre>\n<p>\u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438, \u0430 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0438\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u044f \u0434\u0430\u043b \u0435\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u043a\u0430 \u043f\u0440\u0430\u0432\u0434\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043f\u043e\u043b\u044f \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0434\u043e\u0445\u043d\u0443\u0442\u044c \u0432 \u043d\u0438\u0445 \u0445\u043e\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043c\u044b\u0441\u043b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0432\u044b\u0432\u043e\u0434.<\/p>\n<pre><code class=\"cpp\">void __fastcall fill_net_buffer(         struct Net_Storage *storage,         __int16 hi_half,         __int16 a3,         unsigned __int16 lo_half,         int a5) {   *(_DWORD *)&amp;storage[1].padding[2030] = 0;   xmemset(&amp;storage->buffer, 2070, 0);   storage->buffer.field_0 = 0x2E71895C;   storage->buffer.field_4 = 22;   storage->buffer.field_6 = a3;   storage->buffer.field_8 = -1;   storage->buffer.field_A = a5;   storage->buffer.field_E = lo_half;   HIWORD(storage->buffer.field_E) = hi_half;   storage->buffer.field_12 = -1; }<\/code><\/pre>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u2014 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0432\u0435\u0449\u0435\u0439. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e, \u0442\u0435\u043c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0435\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043c\u0430\u043b\u043e\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u0412\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u043d\u0430\u0447\u0430\u043b\u0443 <code>search_perform()<\/code>, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0432 <code>sub_4D3B88()<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0430\u043c\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 \u0431\u0443\u0444\u0435\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e.<\/p>\n<pre><code class=\"cpp\">bool __fastcall sub_4D3B88(struct Net_Storage *storage, struct Net_Buffer *buf) {   struct sockaddr to; \/\/ [esp+0h] [ebp-1Ch] BYREF    to.sa_family = 2;   *(_DWORD *)&amp;to.sa_data[2] = -1;   *(_WORD *)to.sa_data = j_htons_0(0xDAB8u);   return j_sendto(storage->socket, (const char *)buf, (unsigned __int16)buf->field_4, 0, &amp;to, 16) != -1; }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u043d\u0430 \u0447\u0442\u043e \u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0435\u0451 \u043f\u043e\u043b\u044f\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e \u0438\u0434\u0435\u0435 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0435 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0442\u0438\u043f\u043e\u0432. \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <code>struct sockaddr<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c. \u0414\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>sendto()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>struct sockaddr *<\/code>. <code>struct sockadrr<\/code> \u044d\u0442\u043e <em>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/em> <em>\u0430\u0434\u0440\u0435\u0441\u0430<\/em> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 16 \u0431\u0430\u0439\u0442. \u0414\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f IPv4 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u0441 \u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>struct sockaddr_in<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043d\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">bool __fastcall broadcast_net_buffer(struct Net_Storage *storage, struct Net_Buffer *buf) {   struct sockaddr_in sin; \/\/ [esp+0h] [ebp-1Ch] BYREF    sin.sin_family = AF_INET;   sin.sin_addr.S_un.S_addr = 0xFFFFFFFF;   sin.sin_port = j_htons_0(0xDAB8u);   return j_sendto(            storage->socket,            (const char *)buf,            (unsigned __int16)buf->field_4,            0,            (const struct sockaddr *)&amp;sin,            16) != -1; }<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 IP-\u0430\u0434\u0440\u0435\u0441, \u043f\u043e\u0440\u0442 \u0438 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u043a\u0435\u0442\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e<code>AF_INET<\/code>. \u0421\u0430\u043c \u0430\u0434\u0440\u0435\u0441 0xFFFFFFFF \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0431\u0438\u0442\u044b, \u0432 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0431\u044b \u043a\u0430\u043a 255.255.255.255. \u0418\u0437-\u0437\u0430 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0446\u0438\u0438 <code>SO_BROADCAST<\/code> \u0434\u043b\u044f \u0441\u043e\u043a\u0435\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0440\u0430\u0437\u043e\u043c \u043d\u0430 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 0xDAB8, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u043e\u043b\u044e, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>htons()<\/code> (Host TO Network Short). \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0431\u0430\u0439\u0442 \u0445\u043e\u0441\u0442\u0430 \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0431\u0430\u0439\u0442. \u041f\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0435\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 big endian. \u0415\u0441\u043b\u0438 \u0443 \u0445\u043e\u0441\u0442\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0430\u0439\u0442 little endian, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0432 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432 <code>sendto()<\/code> \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>sin<\/code>. \u042f \u043e\u0431\u0440\u0430\u0442\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u043c <code>field_4<\/code>. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u0435\u0433\u043e, \u0438 \u0432\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a <code>fill_net_buffer()<\/code> \u0443\u0432\u0438\u0434\u0435\u043b \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0439, \u0440\u043e\u0432\u043d\u043e 22 \u0431\u0430\u0439\u0442\u0430.<\/p>\n<h2>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u043e\u0432<\/h2>\n<p>\u0421\u043b\u0435\u0434\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 200 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u043e\u0442\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u0446\u0438\u043a\u043b\u0430, \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 <code>sub_4D3ACC()<\/code>:<\/p>\n<pre><code class=\"cpp\">      ...          do       {         v1 = sub_4D3ACC((int)_storage, (int)&amp;a2, &amp;v22, _storage->padding, 0x1FFF, &amp;v21, 500);         if ( v1 )         {            ...          }       }       while ( v1 );        ...<\/code><\/pre>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0418 \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u0442\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0447\u0435\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0451\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043b\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0446\u0438\u043a\u043b \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e.<\/p>\n<pre><code class=\"cpp\">int __fastcall sub_4D3ACC(struct Net_Storage *storage, int a2, _DWORD *a3, char *buf, int len, int *a6, int a7) {   int v9; \/\/ ebx   char *v10; \/\/ eax   struct sockaddr from; \/\/ [esp+Ch] [ebp-128h] BYREF   fd_set readfds; \/\/ [esp+1Ch] [ebp-118h] BYREF   int fromlen; \/\/ [esp+120h] [ebp-14h] BYREF   struct timeval timeout; \/\/ [esp+124h] [ebp-10h] BYREF   _DWORD *v16; \/\/ [esp+12Ch] [ebp-8h]    v16 = a3;   v9 = 0;   timeout.tv_sec = 0;   timeout.tv_usec = 1000 * a7;   sub_4CF240(&amp;readfds);   unknown_libname_604(storage->socket, (int *)&amp;readfds);   if ( j_select(2080, &amp;readfds, 0, 0, &amp;timeout) > 0 )   {     fromlen = 16;     *a6 = j_recvfrom(storage->socket, buf, len, 0, &amp;from, &amp;fromlen);     v10 = j_inet_ntoa(*(struct in_addr *)&amp;from.sa_data[2]);     unknown_libname_30(a2, v10);     *v16 = j_htons(*(u_short *)from.sa_data);     LOBYTE(v9) = 1;   }   return v9; }<\/code><\/pre>\n<p>\u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>struct timeval<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 MS-Windows\/*NIX \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0442\u043e \u0437\u043d\u0430\u0435\u0442\u0435 \u0447\u0442\u043e <code>select()<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430, \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 <code>select()<\/code> \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u2014 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\/\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u043b\u0438 \u0436\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u0437\u0432\u0430\u043b \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0435\u0431\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u044f\u0434\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441\u043d\u0438\u043c\u0430\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u044e\u0437\u0435\u0440\u043b\u044d\u043d\u0434\u0435. \u041d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>select()<\/code> \u0434\u043b\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439. <code>poll()<\/code> \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 <code>select()<\/code>.<\/p>\n<p>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u0435\u0439. <code>tv_sec<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c, \u0430 <code>tv_usec<\/code> \u2014 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c. \u0423\u043c\u043d\u043e\u0436\u0430\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>a7<\/code> \u043d\u0430 1000, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 <code>a7<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.<\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>sub_4CF240()<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u0435\u0451 \u043f\u043e\u043b\u0435 <code>fd_count<\/code> \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>mov<\/code>. \u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 <code>FD_ZERO()<\/code>, \u0447\u0442\u043e \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u043a\u0435\u0442\u043e\u0432. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u0435\u0451 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435.<\/p>\n<pre><code class=\"cpp\">void __fastcall FD_ZERO(fd_set *set) {   set->fd_count = 0; }<\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 <code>unknown_libname_604()<\/code> \u0431\u044b\u043b\u0430 \u0434\u0430\u0436\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u043e\u0442 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0435\u0451 \u0438\u043c\u0435\u043d\u0435\u043c. \u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u043e\u043a\u0435\u0442 \u0432 \u043d\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>select()<\/code>. \u041e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0441 <code>FD_SET()<\/code>, \u0430 \u043a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">\/\/ Delphi2006\/BDS2006 Visual Component Library void __fastcall FD_SET(SOCKET fd, fd_set *set) {   if ( (int)set->fd_count &lt; 64 )     set->fd_array[set->fd_count++] = fd; }<\/code><\/pre>\n<p><code>select()<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0442\u0440\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u2014 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u044f, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<pre><code class=\"cpp\">  if ( j_select(2080, &amp;readfds, NULL, NULL, &amp;timeout) > 0 )<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0432\u044b\u0437\u043e\u0432\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b-\u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u041c\u043e\u0451 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u043b\u0451\u043a \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 2080. <code>nfds<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>select()<\/code> \u0432 *NIX \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432. \u0412 MS-Windows \u0436\u0435 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435, \u0430 <a href=\"https:\/\/learn.microsoft.com\/ru-ru\/windows\/win32\/api\/winsock2\/nf-winsock2-select#parameters\" rel=\"noopener noreferrer nofollow\">MSDN<\/a> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0447\u0442\u043e \u043e\u043d \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0410\u0411\u0418 \u0441 BSD \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0415\u0441\u043b\u0438 \u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u043f\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438\u0437 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 Linux \u0441\u0438\u0441\u0442\u0435\u043c, \u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0431\u044b \u0441\u044e\u0434\u0430 <code>storage->socket + 1<\/code>, \u0432 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u043e\u043b\u044c. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043d\u0438 \u043c\u0430\u043b\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0433\u0430\u0434\u043e\u043a \u043d\u0430\u0441\u0447\u0451\u0442 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e 2080.<\/p>\n<p>\u0412\u044b\u0437\u043e\u0432 <code>select()<\/code> \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439, \u043e\u043d \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043b\u0438\u0431\u043e \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043b\u0438\u0431\u043e \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043e\u043a\u0435\u0442\u0435. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>select()<\/code> \u0432\u0435\u0440\u043d\u0451\u0442 1 (\u043e\u0434\u0438\u043d \u0441\u043e\u043a\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0435), \u0447\u0442\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438 \u0442\u0435\u043b\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f. <code>recvfrom()<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u043e\u043a\u0435\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>len<\/code> (8191 \u0431\u0430\u0439\u0442), \u0430 \u0431\u0443\u0444\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>buf<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041a\u043e\u0435-\u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u043e \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e&#8230;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d2f\/2fa\/199\/d2f2fa1993074d6eaac4f69a7c61e592.png\" alt=\"\" title=\"\" width=\"571\" height=\"246\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d2f\/2fa\/199\/d2f2fa1993074d6eaac4f69a7c61e592.png\"\/><\/figure>\n<p>\u0412\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>struct Net_Storage<\/code>, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 8192 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u044b\u043b\u043e \u043d\u0438 \u0447\u0435\u043c \u0438\u043d\u044b\u043c, \u043a\u0430\u043a \u0431\u0443\u0444\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043f\u043e \u0441\u0435\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0430\u0432\u0434\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0431\u044b\u043b\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 <code>recvfrom()<\/code>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0435 <code>struct Net_Storage<\/code>, \u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 <code>struct Net_Buffer<\/code>, \u0432\u0435\u0434\u044c \u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 <code>xmemset()<\/code>. \u041a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f.<\/p>\n<pre><code class=\"cpp\">    v10 = j_inet_ntoa(*(struct in_addr *)&amp;from.sa_data[2]);<\/code><\/pre>\n<p>\u041e\u043f\u044f\u0442\u044c \u043d\u0435\u0443\u0440\u044f\u0434\u0438\u0446\u0430 \u0441 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u042f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0442\u0443 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0447\u0442\u043e \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u043d\u0435\u0435 \u2014 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u043d\u043e\u0432\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b \u0442\u0438\u043f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>inet_ntoa()<\/code> \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 IPv4 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 4-\u0445 \u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0432 \u0447\u0438\u0442\u0430\u0435\u043c\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0438\u0434\u0430 &#171;<em>XXX.XXX.XXX.XXX&#187;<\/em>. \u041f\u043e\u043c\u0435\u043d\u044f\u043b \u0442\u0438\u043f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0432\u044b\u0432\u043e\u0434 \u0441\u0442\u0430\u043b \u0432 \u0440\u0430\u0437\u044b \u0447\u0438\u0449\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0430\u0434\u0440\u0435\u0441, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 <code>recvfrom()<\/code>:<\/p>\n<pre><code class=\"cpp\">    v10 = j_inet_ntoa(from.sin_addr);<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <code>v10<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u043d\u0435\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>unknown_libname_30()<\/code>. \u041e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0430\u0434\u0440\u0435\u0441, \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0451\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u043f\u043e\u0442\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 <code>MultiByteToWideChar()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u042e\u043d\u0438\u043a\u043e\u0434. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e\u0439 \u0440\u043e\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<pre><code class=\"cpp\">BOOL __fastcall next_device(struct Net_Storage *storage, LPCWSTR *ip_u16, int *port, char *buf, int len, int *recv_len, int timeout_ms) {   BOOL ret; \/\/ ebx   char *ip_cstr; \/\/ eax   struct sockaddr_in from; \/\/ [esp+Ch] [ebp-128h] BYREF   fd_set readfds; \/\/ [esp+1Ch] [ebp-118h] BYREF   int fromlen; \/\/ [esp+120h] [ebp-14h] BYREF   struct timeval timeout; \/\/ [esp+124h] [ebp-10h] BYREF   int *_port; \/\/ [esp+12Ch] [ebp-8h]    _port = port;   ret = FALSE;   timeout.tv_sec = 0;   timeout.tv_usec = 1000 * timeout_ms;   FD_ZERO(&amp;readfds);   FD_SET(storage->socket, &amp;readfds);   if ( j_select(2080, &amp;readfds, NULL, NULL, &amp;timeout) > 0 )   {     fromlen = 16;     *recv_len = j_recvfrom(storage->socket, buf, len, 0, (struct sockaddr *)&amp;from, &amp;fromlen);     ip_cstr = j_inet_ntoa(from.sin_addr);     cstr_to_u16(ip_u16, ip_cstr);     *_port = j_htons(from.sin_port);     LOBYTE(ret) = TRUE;   }   return ret; }<\/code><\/pre>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043d\u0443\u0436\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432, \u0442\u0435\u043b\u043e <code>search_perform()<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0430\u043c\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430:<\/p>\n<pre><code class=\"cpp\">  ...    if ( storage->is_initialized )   {     fill_net_buffer(_storage, 0xFFFF, 0, 0xFFFFu, -1);     if ( broadcast_net_buffer(_storage, &amp;_storage->buffer) )     {       j_Sleep_0(0xC8u);        ...        do       {         got_device = next_device(_storage, &amp;ip_u16, &amp;port, _storage->recv_buffer, 8191, &amp;recv_len, 500);         if ( got_device &amp;&amp; recv_len > 10 &amp;&amp; port == 55992 )         {           _storage->recv_buffer[recv_len] = '\\0';           if ( (unsigned __int8)sub_4D3C7C((int)_storage, (int)_storage->recv_buffer, recv_len, v19, v20, v18, 1) )           {              ...            }         }       }       while ( got_device );        ...              TObject::Free(v18);     }   }    ...<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0442\u043e\u0442 \u043b\u0438\u0448\u043d\u0438\u0439 \u0431\u0430\u0439\u0442 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043f\u0440\u0438\u0451\u043c\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0431\u0430\u0439\u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0443. \u042d\u0442\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u0418 \u0437\u0434\u0435\u0441\u044c \u0436\u0435, \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 11 \u0431\u0430\u0439\u0442 (\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u0438 \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0440\u0442 55992.<\/p>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 11 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 netcat \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 UDP \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<pre><code class=\"bash\">$ echo -n \"AAAAAAAAAA\" | nc -u -l -p 55992<\/code><\/pre>\n<p>\u0418 \u043d\u0435\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c. \u0417\u0430\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0435\u0451 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0431\u0443\u0444\u0435\u0440, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0438 \u043f\u043e\u0440\u0442 \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0431\u044b\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0412\u044b\u0432\u0435\u0434\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0434\u0432\u043e\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0440\u043e\u0432\u043d\u043e 22 \u0431\u0430\u0439\u0442\u0430:<\/p>\n<p><code>5c 89 71 2e 16 00 00 00 ff ff ff ff ff ff ff ff<br \/> ff ff ff ff ff ff<\/code><\/p>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0435\u0451 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442, \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u0435\u0434\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u0435 <code>sub_4D3C7C()<\/code>, \u044f \u0440\u0435\u0448\u0438\u043b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<pre><code>(gdb) b *0x4D36CA Breakpoint 1 at 0x4d36ca (gdb) c Continuing. [Thread 38836.0x7310 exited with code 0] [New Thread 38836.0xa88] [New Thread 38836.0x9318] [Switching to Thread 38836.0x7980]  Thread 1 hit Breakpoint 1, 0x004d36ca in ?? ()  (gdb) x\/11bx *(void **)($ebp - 8) + 0x14 0x24352b4:      0x41    0x41    0x41    0x41    0x41    0x41    0x41    0x41 0x24352bc:      0x41    0x41    0x41 (gdb)<\/code><\/pre>\n<p>\u0411\u0443\u043a\u0432\u044b &#8216;<em>A<\/em>&#8216;, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. <code>sub_4D3C7C()<\/code> \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0435\u0448\u0430\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u0442 \u043a\u0430\u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438\u043b\u0438 \u0436\u0435 \u043d\u0435\u0442. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043e\u043a \u043a \u043f\u043e\u0431\u0435\u0434\u0435, \u0432\u0435\u0434\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <em>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c<\/em> <em>\u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438<\/em>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b <code>sub_4D3C7C()<\/code> \u0432 <code>validate_packet()<\/code> \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0431\u0443\u0444\u0435\u0440 \u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442.<\/p>\n<pre><code class=\"cpp\">  ...    v7 = _InterlockedExchange((volatile __int32 *)&amp;_recv_buffer, recv_len);   _recv_buffer = recv_buffer;   v8 = (int)a4;    ...    ret = FALSE;   (*(void (__fastcall **)(_DWORD *, _DWORD))(*a6 + 68))(a6, *a6);   *a4 = 0;   a4[1] = 0;   *a5 = 0;   v35 = 0;   if ( v7 >= 22 )   {     size = recv_buffer->size;     if ( v7 == size &amp;&amp; size &lt;= 0xFFu )     {       v11 = (size - 22) \/ 8;       if ( size == 8 * v11 + 22 )       {         v12 = (unsigned __int16)recv_buffer->field_E;         *a4 = recv_buffer->field_A;         a4[1] = v12;         *a5 = (unsigned __int16)recv_buffer->field_6;         if ( !a7 || a4[1] != 0xFFFF || *a4 != -1 )         {           ret = TRUE;            ...<\/code><\/pre>\n<p><code>_InterlockedExchange()<\/code> \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0440\u0438\u043d\u0441\u0438\u043a \u043e\u0442 Microsoft \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>xchg<\/code>. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c: \u0442\u0430\u043a \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>_recv_buffer<\/code> \u0438 <code>recv_len<\/code> \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0421\u0430\u043c\u0430 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"assembly\">  xchg ecx, [ebp+_recv_buffer]      ...    mov edi, ecx<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, <code>v7<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>recv_len<\/code>(\u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0435\u0439 \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430), \u0432\u0435\u0434\u044c <code>_InterlockedExchange()<\/code> <em>\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/em>. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435: \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>v7<\/code> \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>edi<\/code>.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0431\u043e\u043b\u044c\u0448\u0435, \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u0435\u043d 22 \u0431\u0430\u0439\u0442\u0430\u043c. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u0432\u0435\u043d \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0435\u043d\u044c\u0448\u0435, \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u0435\u043d 255 \u0431\u0430\u0439\u0442\u0430\u043c.<\/p>\n<pre><code class=\"cpp\">    size = recv_buffer->size;     if ( v7 == size &amp;&amp; size &lt;= 0xFFu )<\/code><\/pre>\n<p>\u0418 \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0432\u0435\u0434\u044c \u0437\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 8 \u041a\u0431, \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 255 \u0431\u0430\u0439\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0431\u0443\u0444\u0435\u0440, \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0437\u0430\u0433\u0430\u0434\u043a\u043e\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0432 <code>recvfrom()<\/code> \u0438 \u0440\u0430\u0432\u043d\u043e\u0435 8 \u041a\u0431.<\/p>\n<pre><code class=\"cpp\">      v11 = (size - 22) \/ 8;       if ( size == 8 * v11 + 22 )<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043c\u043d\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0430. \u041d\u043e \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0432\u0448\u0438\u0441\u044c, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0435\u043b\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 8 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0447\u0430\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u043f\u0435\u0440\u0432\u044b\u0445 22 \u0431\u0430\u0439\u0442. \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 22 \u0431\u0430\u0439\u0442\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0430, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043b\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u0435\u043d 8 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0438\u0437 <code>__int64<\/code>. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0441 \u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c, \u0442\u043e \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0447\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0442\u0441\u044f. \u042d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u0437\u044f\u0442\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u0442\u0430\u043a: <code>!((size - 22) % 8)<\/code>.<\/p>\n<pre><code class=\"cpp\">        v12 = (unsigned __int16)recv_buffer->field_E;         *a4 = recv_buffer->field_A;         a4[1] = v12;         *a5 = (unsigned __int16)recv_buffer->field_6;         if ( !a7 || a4[1] != 0xFFFF || *a4 != 0xFFFFFFFF ) {           ret = TRUE;                      ...<\/code><\/pre>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 0xFFFFFFFF \u043a\u0430\u043a \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e -1, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u044d\u0442\u043e. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0447\u0430\u0441\u0442\u0435\u0439, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c &#171;\u0418\u041b\u0418&#187;. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f, \u0442\u043e \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043c\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439. \u041f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <code>!a7<\/code> <em>\u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f<\/em>, \u0432\u0435\u0434\u044c \u0432 \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 1, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0444\u043b\u0430\u0433. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0440\u0430\u0437\u0430, \u0432 \u043e\u0431\u043e\u0438\u0445 \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 <code>a7<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u043e \u00af\\_(\u30c4)_\/\u00af. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0438\u0436\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>field_E<\/code> \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438, \u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 <code>field_A<\/code> \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c:<\/p>\n<ul>\n<li>\n<p>\u041f\u0430\u043a\u0435\u0442 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f UDP \u043f\u043e\u0440\u0442 55992<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u0435, \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u0435\u043d 22-\u043c \u0431\u0430\u0439\u0442\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0432\u0435\u043d \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0438<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 255 \u0431\u0430\u0439\u0442<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043b\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 (\u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f) \u043a\u0440\u0430\u0442\u0435\u043d 8-\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u041b\u0438\u0431\u043e \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u043e\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 <code>field_E<\/code>, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u0435 <code>field_A<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e <em>\u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0431\u0438\u0442<\/em> \u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u0431\u0443\u0444\u0435\u0440. \u041d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0439\u0442\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0441\u0432\u043e\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c 4-\u0445 \u0431\u0438\u0442\u043d\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c.<\/p>\n<pre><code class=\"bash\">echo -ne \"\\xAA\\xAA\\xAA\\xAA\\x16\\x00\\xBB\\xBB\\xCC\\xCC\\xDD\\xDD\\xDD\\xDD\" \\          \"\\xEE\\xEE\\xFF\\xFF\\x55\\x55\\x55\\x55\" | nc -u -l -p 55992<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 &#171;<em>\u041f\u043e\u0438\u0441\u043a<\/em>&#171;, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u0432\u0435\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c57\/e6b\/d3f\/c57e6bd3f2b2d141edfd0dd25f086643.png\" width=\"832\" height=\"175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c57\/e6b\/d3f\/c57e6bd3f2b2d141edfd0dd25f086643.png\"\/><\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 IP \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u043c\u043e\u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440. \u0418\u0437 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u043b\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e MAC-\u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435 \u043e\u043d \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u0438\u043b\u043e \u043f\u043e\u043b\u0435 <code>field_E<\/code> \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u0438 \u043d\u0438\u0436\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u0432\u0435\u0434\u044c \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0442\u043e\u0440\u043e\u0439, \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e MAC-\u0430\u0434\u0440\u0435\u0441\u0430. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f 0xFFFF, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 <code>field_E<\/code>. \u0415\u0449\u0451 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0438 \u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u044f &#171;<em>\u041f\u043e\u0440\u0442 TCP<\/em>&#187; \u0438 &#171;<em>\u041f\u043e\u0440\u0442 UDP<\/em>&#187; \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u044f. \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0442\u0435\u043b\u0430 \u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0442.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/686\/ffe\/31d\/686ffe31d6dc21e124562c57011b4627.png\" width=\"835\" height=\"127\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/686\/ffe\/31d\/686ffe31d6dc21e124562c57011b4627.png\"\/><\/figure>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 85, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0439\u0442\u0430\u043c 0xAA, \u0438\u043b\u0438 \u0436\u0435 \u043f\u043e\u043b\u044e <code>field_0<\/code>.<\/p>\n<h2>\u0422\u0435\u043b\u043e \u043f\u0430\u043a\u0435\u0442\u0430<\/h2>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c. \u041d\u043e \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0437\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u043e\u0442 \u0442\u0430\u043a \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u0430\u043a\u0435\u0442 \u0441 \u0442\u0435\u043b\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">#   define OPTIONAL_SIZE   10      struct __attribute__((__packed__)) Packet_Header {         uint32_t ipv4;         uint16_t size;         uint16_t reserved1;         uint16_t reserved2;         uint32_t reserved3;         uint32_t mac_first;         uint32_t mac_second_hwid;     };     _Static_assert(sizeof(struct Packet_Header) == 0x16u);      const size_t size = sizeof(struct Packet_Header) + 8 * OPTIONAL_SIZE;     uint8_t p[size];      struct Packet_Header *ph = (struct Packet_Header *)p;     memset(ph, 0, sizeof *ph);     ph->size = size;      const uint64_t templates[] = {         0xAAAAAAAAAAAAAAAA,         0xBBBBBBBBBBBBBBBB,         0xCCCCCCCCCCCCCCCC,         0xDDDDDDDDDDDDDDDD,         0xEEEEEEEEEEEEEEEE,         0xFFFFFFFFFFFFFFFF     };      for (int i = 0; i &lt; OPTIONAL_SIZE; i++)         ((uint64_t *)(p + sizeof(struct Packet_Header)))[i] = templates[i % 6];      fwrite(p, 1, size, stdout);<\/code><\/pre>\n<p>\u041f\u0430\u043a\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439, \u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u044f \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u043f\u043e \u0442\u0435\u043b\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>validate_packet()<\/code>, \u0442\u043e  \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0446\u0438\u043a\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e 8 \u0431\u0430\u0439\u0442 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0430\u043a\u0435\u0442\u0435:<\/p>\n<pre><code class=\"cpp\">          v13 = v11 - 1;           if ( v13 >= 0 )           {             v38 = v13 + 1;             v8 = 0;             do             {               v13 = *((unsigned __int16 *)&amp;recv_buffer[1].ipv4 + 4 * v8);               if ( (_WORD)v13 == 1 || (_WORD)v13 == 2 )               {                  ...                                }               else               {                  ...                }               ++v8;               --v38;             }             while ( v38 );           }<\/code><\/pre>\n<p><code>v11<\/code> \u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>(size - 22) \/ 8<\/code>, \u0447\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f, \u0446\u0438\u043a\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f, \u0432\u044b\u0434\u0435\u043b\u044f\u044f \u043f\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0447\u0438\u0441\u0435\u043b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <code>v13<\/code>, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439: \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430 <code>recv_buffer<\/code> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043f\u043e\u043b\u044e <code>ipv4<\/code>. \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0430\u0434\u0440\u0435\u0441\u0443 \u043d\u0430 16-\u0431\u0438\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u0432\u0451\u0440\u043a\u0430 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u043d\u0430 <code>v8<\/code>&#8230; \u041e\u0442\u0447\u0451\u0442\u043b\u0438\u0432\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e <code>v8<\/code> \u2014 \u044d\u0442\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u043e\u043b\u0435\u043c <code>struct Net_Storage<\/code> \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b, \u043e\u043d \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b \u0447\u0442\u043e \u0437\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0430\u043a\u0430\u044f \u0436\u0435. \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u043e\u043b\u0435\u043c <code>__int64 optional[1]<\/code>, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u043f\u0440\u0430\u0432\u0434\u0443:<\/p>\n<pre><code class=\"cpp\">              v13 = LOWORD(recv_buffer->optional[v8]);<\/code><\/pre>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0431\u043b\u043e\u043a <code>if<\/code>, \u043b\u0438\u0431\u043e \u0431\u043b\u043e\u043a <code>else<\/code> \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u2014 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, \u0430 \u0434\u0430\u043b\u0435\u0435 \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 <code>a6<\/code> \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c.<\/p>\n<p>\u0412 \u043f\u0430\u0440\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 1 \u0438 2 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:<\/p>\n<pre><code class=\"cpp\">    const uint64_t templates[] = {         0xAAAAAAAAAAAA0001,         0xBBBBBBBBBBBB0002,         0xCCCCCCCCCCCCCCCC,         0xDDDDDDDDDDDDDDDD,         0xEEEEEEEEEEEEEEEE,         0xFFFFFFFFFFFFFFFF     };<\/code><\/pre>\n<p>\u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0432 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0432 \u043f\u0430\u043a\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443, \u0447\u0442\u043e \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 &#171;<em>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/em>&#171;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4a9\/f1c\/c5a\/4a9f1cc5abd3880eff1918efafb01e18.png\" width=\"837\" height=\"125\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a9\/f1c\/c5a\/4a9f1cc5abd3880eff1918efafb01e18.png\"\/><\/figure>\n<p>\u041c\u0430\u0441\u043a\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0435 4 \u0431\u0430\u0439\u0442\u0430 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 170, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 0xAA, \u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u0430\u0439\u0442\u044b \u0448\u043b\u044e\u0437\u0430 \u0441\u0442\u0430\u043d\u0443\u0442 0xBB. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 <code>__int64<\/code> \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0448\u043b\u044e\u0437\u0430 \u0438 \u043c\u0430\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u0438. <\/p>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0438\u0436\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u0442 \u043d\u0443\u043b\u044f \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u043b\u043e\u043a <code>else<\/code>. <\/p>\n<pre><code class=\"cpp\">              else               {                 IntToStr(current_optional, &amp;v27);                 IntToStr_0(&amp;v26, HIDWORD(recv_buffer->optional[i]), 0);                 v16 = v26;                 sub_407E4C(&amp;v28, 3, (int)recv_buffer, current_optional, i);                 (*(void (__fastcall **)(_DWORD *, int, _DWORD, int *, LPCCH))(*a6 + 56))(                   a6,                   v28,                   *a6,                   &amp;dword_4D3F50,                   v16);                 if ( LOWORD(recv_buffer->optional[i]) == 4 )                   v39 = 1;               }<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0438\u0436\u043d\u0435\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 <code>v27<\/code> \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>IntToStr()<\/code>. \u0417\u0430\u0442\u0435\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u0435 \u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 <code>v26<\/code>. <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 <code>sub_407E4C()<\/code> \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u0443\u0444\u0435\u0440\u0430 \u0441 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 <code>v28<\/code>. \u041d\u0435 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0442\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 <code>v28<\/code>, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0443. \u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b. \u041f\u043e\u0441\u043b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437 \u043d\u0435\u0451, \u0432 <code>v28<\/code> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u043e\u043a\u0438 L&#187;<em>52428=3435973836<\/em>&#171;. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0430 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0441\u043a\u043b\u0435\u0438\u043b\u0430 \u0434\u0432\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043f\u0430\u0440\u0443 L&#187;&lt;<em>\u043a\u043b\u044e\u0447>=&lt;\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435><\/em>&#171;.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u043e\u0431\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0447\u0438\u0441\u043b\u0430 \u0438\u0437 \u0442\u0435\u043b\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<pre><code>+----------------+------------+------------+ | \u0414\u0430\u043d\u043d\u044b\u0435         | ???        | \u0422\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 | +----------------+------------+------------+ ^                ^            ^ |                |            | 8 \u0431\u0430\u0439\u0442           4 \u0431\u0430\u0439\u0442\u0430      2 \u0431\u0430\u0439\u0442\u0430<\/code><\/pre>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0431\u043b\u043e\u043a\u0430 <code>else<\/code> \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 4, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0435\u0440\u043d\u043e, \u0444\u043b\u0430\u0433 <code>v39<\/code> \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443. \u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043e\u0442 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, \u0441\u0445\u043e\u0436\u0435\u0433\u043e \u0441 \u0442\u0435\u043c\u0438, \u0447\u0442\u043e \u0431\u044b\u043b\u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"cpp\">          if ( !v39 )           {             IntToStr(4, &amp;v24);             IntToStr_0(&amp;v23, recv_buffer->mac_second_hwid, 0);             v17 = v23;             key_value(&amp;v25, 3, (int)recv_buffer, current_optional, i);             (*(void (__fastcall **)(_DWORD *, int, _DWORD, int *, LPCCH))(*a6 + 56))(a6, v25, *a6, &amp;dword_4D3F50, v17);           }<\/code><\/pre>\n<p>\u042f \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0430 4 (\u043f\u043e\u043b\u0443\u0447\u0438\u0432 0xCCCCCCCCCCCC0004), \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u0438\u043d\u044f\u043b \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a81\/2c1\/afe\/a812c1afeaff92096db8c370ae75caf5.png\" width=\"833\" height=\"122\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a81\/2c1\/afe\/a812c1afeaff92096db8c370ae75caf5.png\"\/><\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c, \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u043d\u0430\u0448\u0451\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\"><strong>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\">0x0001<\/p>\n<\/td>\n<td>\n<p align=\"center\"><em>\u041c\u0430\u0441\u043a\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0438<\/em><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\">0x0002<\/p>\n<\/td>\n<td>\n<p align=\"center\"><em>\u0428\u043b\u044e\u0437<\/em><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\">0x0004<\/p>\n<\/td>\n<td>\n<p align=\"center\"><em>IP \u0430\u0434\u0440\u0435\u0441<\/em> (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0435 \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\">0x0005<\/p>\n<\/td>\n<td>\n<p align=\"center\"><em>\u0410\u0434\u0440.<\/em><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"351\" width=\"351\">\n<p align=\"center\">0x0006<\/p>\n<\/td>\n<td>\n<p align=\"center\"><em>\u041f\u043e\u0440\u0442 UDP<\/em><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>\u0418\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c<\/h2>\n<p>\u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1f7\/cd0\/447\/1f7cd04479fc230f3b7b2904fee2d6b8.png\" width=\"1280\" height=\"720\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f7\/cd0\/447\/1f7cd04479fc230f3b7b2904fee2d6b8.png\"\/><\/figure>\n<p>\u0421\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u044c\u044e<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c UDP \u0441\u043e\u043a\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e <code>SO_BROADCAST<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 broadcast \u0430\u0434\u0440\u0435\u0441\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0441\u0435\u043c \u043d\u0430 \u043f\u043e\u0440\u0442 55992<\/p>\n<\/li>\n<li>\n<p>\u0416\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u043e\u043a\u0435\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 500 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u043e, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438\u0445<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0448\u0430\u0433\u0443 6<\/p>\n<\/li>\n<\/ol>\n<p>\u0418 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u0439\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0433\u0430\u0434\u0430\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u0447\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>WSADATA<\/code> \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0432 <code>WSAStartup()<\/code>?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>nfds<\/code> \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 <code>select()<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f 2080?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 8 \u041a\u0431, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u2014 255 \u0431\u0430\u0439\u0442?<\/p>\n<\/li>\n<\/ul>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u0435\u0433\u043e, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0434 \u0441\u0432\u043e\u0451 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439. <\/p>\n<p>\u042d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e \u0438 \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u041f\u041e \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u043c\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u043c\u0438. \u0414\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 C++,  \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Delphi \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 <code>__register<\/code> (\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 IDA Pro \u043a\u0430\u043a <code>__fastcall<\/code> \u0438\u043b\u0438 <code>__usercall<\/code>), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0437\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0449\u0451 \u0433\u043b\u0443\u0431\u0436\u0435, \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430\u0439\u0442\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f, \u0434\u0430\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0430\u043c\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u044d\u0442\u043e \u0437\u0434\u0435\u0441\u044c, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0439\u0434\u0451\u0442 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0443\u0437\u043d\u0430\u0435\u0442 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0432\u043e\u0435.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><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:\/\/habr.com\/ru\/articles\/830582\/\"> https:\/\/habr.com\/ru\/articles\/830582\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0434 MS-Windows \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 LED-\u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0442\u0430\u0431\u043b\u043e \u0432 \u0441\u0435\u0442\u0438. \u041c\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u044f \u043d\u0430 \u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0436\u0438\u0434\u0430\u044f \u0447\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u044f\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442. \u042f \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0443\u043c\u043a\u0438, \u0432\u0435\u0434\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0431\u0440\u0443\u0442\u0444\u043e\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u0435\u0442\u044c, \u0434\u0430 \u0438 \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439. \u0414\u0440\u0443\u0433\u0438\u0445 \u0438\u0434\u0435\u0439 \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e. \u041c\u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043a\u043e\u043f\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0433\u0434\u0435 \u043f\u043e\u0438\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 IP \u0438 MAC-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0440\u044f\u0434\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u0445, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0448\u043b\u0438\u0441\u044c. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0435 \u0438\u043c\u0435\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u044b, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0438 hex-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b, \u0433\u043e\u0442\u043e\u0432\u044f\u0441\u044c \u043a \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0443\u0436\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<p><strong>\u0412\u0410\u0416\u041d\u041e:<\/strong> \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0430, \u044f\u0437\u044b\u043a\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0434\u043b\u044f x86, \u0421\u0438, \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u041d\u0415 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u0438 \u041d\u0415 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0417\u0434\u0435\u0441\u044c \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u0431\u044b \u0432\u044b. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043b\u0435\u0436\u0438\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/h2>\n<p>\u0412 \u0440\u0443\u043a\u0438 \u043c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b <strong>.zip<\/strong> \u0430\u0440\u0445\u0438\u0432 \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<ul>\n<li>\n<p><strong>UNICONFIG.EXE<\/strong> \u2014\u00a0<em>\u041a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/em>. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 &#171;<em>\u041f\u043e\u0438\u0441\u043a<\/em>&#171;.<\/p>\n<\/li>\n<li>\n<p><strong>TESTCONN.EXE<\/strong> \u2014 <em>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/em>. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441 \u0445\u043e\u0441\u0442\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>UNICONFIG.INI<\/strong>, <strong>TESTCONN.INI<\/strong> \u2014 <em>\u0424\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/em><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u043a\u043d\u043e UNICONFIG.EXE \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439: \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0445 \u0432 \u0433\u0440\u0443\u043f\u043f\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u043b\u0435\u0439 \u0432\u0432\u043e\u0434\u0430, \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0440\u044f\u0434 \u0432\u043a\u043b\u0430\u0434\u043e\u043a. \u041c\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 C\/C++ \u0438 WinApi, \u0441\u0441\u044b\u043b\u0430\u044f\u0441\u044c \u043d\u0430 \u043c\u0430\u043b\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 (\u0432\u0441\u0435\u0433\u043e 441 \u041a\u0431). \u041c\u043d\u0435 \u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0432\u0435\u0434\u044c \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043d\u043e \u0438 \u0434\u043e\u043b\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 <code>CreateWindowXXX()<\/code>. \u041f\u0440\u0430\u0432\u0434\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043c\u043e\u0433 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0432\u043e\u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.cyberforum.ru\/beta-testing\/thread1430083.html?ysclid=lysiepvmnc359608885\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>. \u041d\u043e \u0432\u0441\u0451 \u0436\u0435 \u044f \u0441\u043a\u043b\u043e\u043d\u044f\u043b\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043b\u0438\u0431\u043e \u043d\u0430 Delphi, \u043b\u0438\u0431\u043e \u043d\u0430 C# \u0438 WinForms. \u0410 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0440\u0430.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434<\/h2>\n<p>objdump \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u043a pei-i386. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 32-\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 i386-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445. \u041f\u043e\u0440\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0431\u0435\u0433\u043b\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u043b\u0438 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043d\u0435\u0442: \u043f\u0430\u043a\u0435\u0440\u044b \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f ILT \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e IAT \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u0438\u0448\u044c \u043f\u0430\u0440\u0443 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0438\u0445.<\/p>\n<pre><code class=\"bash\">$ objdump -x uniconfig.exe          ...          DLL Name: kernel32.dll         vma:  Hint\/Ord Member-Name Bound-To         16ff79      0  GetProcAddress         16ff8a      0  GetModuleHandleA         16ff9d      0  LoadLibraryA          ...          DLL Name: user32.dll         vma:  Hint\/Ord Member-Name Bound-To         170277      0  LoadStringW          DLL Name: user32.dll         vma:  Hint\/Ord Member-Name Bound-To         170285      0  CreateWindowExW          ...          DLL Name: wsock32.dll         vma:  Hint\/Ord Member-Name Bound-To         17035b      0  WSACleanup          ...<\/code><\/pre>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u043e \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0418\u0437 kernel32.dll \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f <code>GetProcAddress()<\/code>, <code>GetModuleHandleA()<\/code> \u0438  <code>LoadLibraryA()<\/code>. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438\u0437 kernel32.dll. \u042f \u043e\u0436\u0438\u0434\u0430\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c <code>CloseHandle()<\/code>, \u0438\u043b\u0438 <code>GetCommandLineX()<\/code> \u0441 <code>GetStartupInfoX()<\/code>, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u044b \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u0418\u0437 user32.dll \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>LoadStringW()<\/code> \u0438 <code>CreateWindowExW()<\/code>. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 <code>DestroyWindow()<\/code> \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e <code>RegisterClassX()<\/code>, <code>UnregisterClassX()<\/code>, <code>DefWindowProcX()<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0418\u0437 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u0439-\u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0440\u0430. \u0410 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438 <code>pushad<\/code>:<\/p>\n<pre><code class=\"assembly\">0056F001 | 60                       | pushad                                   | 0056F002 | E8 03000000              | call uniconfig.56F00A                    | 0056F007 | E9 EB045D45              | jmp 45B3F4F7                             | 0056F00C | 55                       | push ebp                                 | 0056F00D | C3                       | ret                                      | 0056F00E | E8 01000000              | call uniconfig.56F014                    | 0056F013 | EB 5D                    | jmp uniconfig.56F072                     | 0056F015 | BB EDFFFFFF              | mov ebx,FFFFFFED                         | 0056F01A | 03DD                     | add ebx,ebp                              |<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u2014 \u0444\u0430\u0439\u043b \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u043a\u0435\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043f\u0430\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 <code>pushad<\/code>\/<code>popad<\/code> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432.<\/p>\n<h2>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430<\/h2>\n<p>\u041f\u0440\u043e\u0431\u0435\u0436\u0430\u0432\u0448\u0438\u0441\u044c \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0432\u043d\u0438\u0437 \u043f\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u044f \u043d\u0430\u0448\u0451\u043b \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>popad<\/code>. \u0421\u0440\u0430\u0437\u0443 \u0437\u0430 \u043d\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u0431\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 1, \u043b\u0438\u0431\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u043a \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<pre><code class=\"assembly\">0056F3AF | 61                       | popad                                    | 0056F3B0 | 75 08                    | jne uniconfig.56F3BA                     | 0056F3B2 | B8 01000000              | mov eax,1                                | 0056F3B7 | C2 0C00                  | ret C                                    | 0056F3BA | 68 A4BD5100              | push uniconfig.51BDA4                    | 0056F3BF | C3                       | ret                                      |<\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Scylla \u044f \u043d\u0430\u0448\u0451\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0438 \u0441\u0434\u0430\u043c\u043f\u0438\u043b \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/h2>\n<p>\u0414\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u042d\u0442\u043e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 99.9% \u0431\u044b\u043b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041c\u043e\u0438\u043c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0440\u0430\u043d\u0435\u0435, \u0431\u044b\u043b\u0438 Delphi \u0438 C#. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043b\u0435\u0434\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u2014 \u0431\u0443\u0434\u044c-\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f C# \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0432\u0435\u0434\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0431\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u043f\u0438\u0441\u044c mscoree.dll \u0441 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 <code>_CorExeMain()<\/code>, \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 .NET \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. CLR \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>Ghidra \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u0430\u043a &#171;<em>borlanddelphi<\/em>&#187; \u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0435 \u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0439. \u0412 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e\u0438\u0441\u043a\u0430\u043b \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0418\u0441\u043a\u0430\u043b \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a, \u043a\u0430\u043a &#171;<em>delphi<\/em>&#171;, &#171;<em>borland<\/em>&#171;, &#171;<em>pascal<\/em>&#171;, &#171;<em>(c)<\/em>&#187; \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u0445. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"bash\">$ strings uniconfig_dump_SCY.exe | grep \"Borland\" FastMM Borland Edition (c) 2004 - 2008 Pierre le Riche \/ Professional Software Development<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/pleriche\/FastMM4?ysclid=lysk3u6otg955009758\" rel=\"noopener noreferrer nofollow\">FastMM<\/a> \u2014 \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Delphi. \u042d\u0442\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Delphi.<\/p>\n<h2>\u041f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043a\u043d\u043e\u043f\u043e\u043a<\/h2>\n<p>\u041a\u043d\u043e\u043f\u043a\u0438 \u0432 Delphi \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 <code>TButton<\/code>. \u0423 <code>TButton<\/code> \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>OnClick()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b-\u043a\u043e\u043b\u0431\u044d\u043a\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u0434\u0430\u0431\u044b \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u0432\u043d\u0435. \u0421\u0434\u0435\u043b\u0430\u0432 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u043e\u043a \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u043c &#171;<em>click<\/em>&#171;, &#171;<em>clicked<\/em>&#187; \u0438 &#171;<em>press<\/em>&#187; \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445, \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0447\u0442\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"bash\">$ strings -tx uniconfig_dump_SCY.exe | grep \"Click\"    ...    f5b10 Button3Click   f5b23 Button5Click   f5b36 Button4Click   f5c51 Button3Click   f5c8d Button5Click   f5cc9 Button4Click   f7777 Button3Click    ...<\/code><\/pre>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438 \u0438\u043c\u0451\u043d \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f PascalCase. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u043e\u043a (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u2014 &#171;<em>Button5Click<\/em>&#171;), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0451, \u0447\u0435\u0440\u0435\u0434\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 &#171;Button5Click&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438\u0434\u0451\u0442 \u0431\u0430\u0439\u0442 0x0C. \u0417\u043d\u0430\u044f, \u0447\u0442\u043e Delphi \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u0445 \u0432 \u0447\u0438\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u043e\u0432\u043d\u043e 12 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432). \u0417\u0430 \u043f\u043e\u043b\u0435\u043c \u0434\u043b\u0438\u043d\u044b \u0438\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u044f, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u0430\u0439\u0442:<\/p>\n<p><code>13 00 8C 6D 4F 00<\/code> <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u0435\u0439 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u0431\u0430\u0439\u0442\u0430 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 <code>int<\/code>. \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0431\u0430\u0439\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0432 \u0438\u0445, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0447\u0438\u0441\u043b\u043e <code>0x004F6D8C<\/code>. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 .text.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-426833","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/426833","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=426833"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/426833\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=426833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=426833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=426833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}