{"id":366979,"date":"2024-05-21T03:11:29","date_gmt":"2024-05-21T03:11:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=366979"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=366979","title":{"rendered":"<span>\u00ab\u041e\u0442\u0443\u0447\u0430\u0435\u043c\u00bb WinFXNet \u043e\u0442 \u0436\u0430\u0434\u043d\u043e\u0441\u0442\u0438 (\u0447\u0430\u0441\u0442\u044c 1)<\/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<h2>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h2>\n<p>\u0412 \u0441\u0444\u0435\u0440\u0435 \u0410\u0421\u0423 \u0422\u041f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u041f\u041e, \u043d\u043e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u041f\u041e \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0430\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u043f\u043e\u043a\u0438\u043d\u0443\u043b\u0438 \u0420\u0424, \u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u041f\u041e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 WinFXNet &#8212; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f Schneider Electric (ESMI) \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u043f\u043e\u0436\u0430\u0440\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0438\u0438 Esmi FX. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0437-\u0437\u0430 \u0441\u0430\u043d\u043a\u0446\u0438\u0439, \u043a\u043b\u044e\u0447 USB Esmi FX FFS00393016 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043d\u0435\u043b\u044c\u0437\u044f, \u0430 \u043e\u043d, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 4-\u043b\u0435\u0442\u043d\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434. \u0423 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u043f\u043b\u044e\u0441 \u0441\u043a\u043e\u0440\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0430 \u0441\u0430\u043c\u043e \u041f\u041e (\u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 lic). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u044b \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043e\u0431\u043e\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443.<\/p>\n<p><strong>Disclaimer:<\/strong>\u00a0\u0414\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432\u00a0<strong>\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c.\u00a0<\/strong>\u0425\u043e\u0442\u044f, \u043f\u043e\u043d\u0438\u043c\u0430\u044f \u0432\u0441\u044e \u0431\u0435\u0437\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0436\u0438\u0437\u043d\u044c, \u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c. \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u0430\u043a \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h2>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443, \u043a\u0430\u043a \u044f \u0438\u0441\u043a\u0430\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043c\u0435\u0448\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u0414\u043b\u044f \u0438\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>Detect It Easy (DiE) (<a href=\"https:\/\/github.com\/horsicq\/Detect-It-Easy\/\" rel=\"noopener noreferrer nofollow\">github<\/a>) &#8212; \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0442\u0438\u043f\u0430 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>Ghidra (<a href=\"https:\/\/github.com\/NationalSecurityAgency\/ghidra\" rel=\"noopener noreferrer nofollow\">github<\/a>) \u043b\u0438\u0431\u043e IDA\/Binary Ninja &#8212; \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>x64dbg (<a href=\"https:\/\/github.com\/x64dbg\/x64dbg\" rel=\"noopener noreferrer nofollow\">github<\/a>) \u043b\u0438\u0431\u043e \u043b\u044e\u0431\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0432\u0430\u043c\u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440.<\/p>\n<\/li>\n<li>\n<p>Interactive Delphi Reconstructor (IDR) (<a href=\"https:\/\/github.com\/crypto2011\/IDR\" rel=\"noopener noreferrer nofollow\">github<\/a>) &#8212; \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434 Delphi.<\/p>\n<\/li>\n<li>\n<p>Dhrake <a href=\"https:\/\/github.com\/huettenhain\/dhrake\" rel=\"noopener noreferrer nofollow\">(github)<\/a> &#8212; \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043b\u044f Ghidr&#8217;\u044b, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 Delphi \u043f\u043e\u0441\u043b\u0435 IDR.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0430\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 &#8212; \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043b\u0438\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/OlegBezverhii\/WinFXNet-SchEl\" rel=\"noopener noreferrer nofollow\">github<\/a> &#8212; \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0436\u0438\u0432\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u0430 \u0447\u0435\u043c \u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 (\u0438\u0437 \u0442\u0435\u0433\u043e\u0432 \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442 \u044f \u0434\u0443\u043c\u0430\u044e \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/786\/7af\/894\/7867af894dd0e73477d3a2a3f1b524f7.PNG\" alt=\"Delphi 2010\" title=\"Delphi 2010\" width=\"868\" height=\"539\"\/><\/p>\n<div><figcaption>Delphi 2010<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Delphi 2010 \u0433\u043e\u0434\u0430 &#8212; \u0437\u043d\u0430\u0447\u0438\u0442 IDR \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u044b. \u0422\u0430\u043a \u0436\u0435 DiE \u043d\u0430\u043c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u0441 NetHASP\/Hardlock dongle.<\/p>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c IDR, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u044b \u0441 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0448\u0442\u0430\u043c\u043f\u0430\u043c\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 exe \u0444\u0430\u0439\u043b. \u0416\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e &#171;Tools -> IDC generator&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8d2\/ec7\/b79\/8d2ec7b7969c8112f8bf218bb3df10aa.png\" alt=\"IDC generator\" title=\"IDC generator\" width=\"2174\" height=\"888\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d2\/ec7\/b79\/8d2ec7b7969c8112f8bf218bb3df10aa.png\"\/><\/p>\n<div><figcaption>IDC generator<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2aa\/417\/3d8\/2aa4173d8d36cadd3eff852554d992fd.PNG\" alt=\"\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 idc \u0444\u0430\u0439\u043b \" title=\"\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 idc \u0444\u0430\u0439\u043b \" width=\"1523\" height=\"1343\"\/><\/p>\n<div><figcaption>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 idc \u0444\u0430\u0439\u043b <\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0443\u0442\u043a\u0430 \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; IDR \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u043e\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e IDA \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0451 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/148\/d4a\/bf5\/148d4abf597e1232d93c20495f9f6147.PNG\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0432 idc, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0432 idc, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c\" width=\"1447\" height=\"227\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0432 idc, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0435\u043d\u043d\u044b\u0439 IDC-\u0441\u043a\u0440\u0438\u043f\u0442: \u0432 IDA Pro \u0436\u043c\u0435\u043c File \u2192 Script File&#8230;, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0436\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/632\/7f0\/6cb\/6327f06cbb9a46d662f424f8cfcf2c51.png\" alt=\"\u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 View -> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b&#187; title=&#187;\u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 View -> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b&#187; width=&#187;1705&#8243; height=&#187;1064&#8243; data-src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/632\/7f0\/6cb\/6327f06cbb9a46d662f424f8cfcf2c51.png&#187;\/><\/p>\n<div><figcaption>\u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 View -> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/50f\/3c2\/b6f\/50f3c2b6f7058f2ac5cb781823fa6f9b.PNG\" alt=\"\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0443 IDA \u0432 \u043c\u0435\u043d\u044e Options \u2192 Compiler \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Delphi (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0438\u0442 C).\" title=\"\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0443 IDA \u0432 \u043c\u0435\u043d\u044e Options \u2192 Compiler \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Delphi (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0438\u0442 C).\" width=\"487\" height=\"623\"\/><\/p>\n<div><figcaption>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0443 IDA \u0432 \u043c\u0435\u043d\u044e Options \u2192 Compiler \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Delphi (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0438\u0442 C).<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 Ghidra \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 Dhrake:<\/p>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25a\/06b\/57c\/25a06b57c4d368b12a9c80f8ecbc0f26.png\" width=\"1593\" height=\"1090\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/25a\/06b\/57c\/25a06b57c4d368b12a9c80f8ecbc0f26.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/868\/bfd\/3da\/868bfd3daf41ed07f116cc464ad46ee8.png\" alt=\"\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Script Directories\" title=\"\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Script Directories\" width=\"1277\" height=\"852\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/868\/bfd\/3da\/868bfd3daf41ed07f116cc464ad46ee8.png\"\/><\/p>\n<div><figcaption>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Script Directories<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/337\/b55\/179\/337b55179438f80b95f7c6b19c3bf6da.png\" alt=\"\u042f \u043f\u043e\u043b\u043e\u0436\u0443 \u0432 USER_HOME\/ghidra_scripts\" title=\"\u042f \u043f\u043e\u043b\u043e\u0436\u0443 \u0432 USER_HOME\/ghidra_scripts\" width=\"1277\" height=\"943\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/337\/b55\/179\/337b55179438f80b95f7c6b19c3bf6da.png\"\/><\/p>\n<div><figcaption>\u042f \u043f\u043e\u043b\u043e\u0436\u0443 \u0432 USER_HOME\/ghidra_scripts<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0451, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 &#8212; DhrakeInit.java \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0448 idc \u0444\u0430\u0439\u043b, \u0436\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a IDR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0441\u0442\u0430\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u043b \u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <strong>EntryPoint<\/strong>. IDR \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u044b Src:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c4\/c51\/8f2\/4c4c518f281487f0179bc1b4e8ebe85f.PNG\" width=\"1132\" height=\"245\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0443\u0433\u043d\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u0442 \u0432 \u043a\u043e\u0434 \u043d\u0430 Delphi:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2cc\/190\/c1a\/2cc190c1ad067024f1a8084d612b022f.PNG\" alt=\"\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\" title=\"\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\" width=\"1277\" height=\"1095\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430 TStartUpForm &#8212; \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b, \u043f\u0440\u044f\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0441\u0443\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0412 IDR \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Forms, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043a \u0447\u0435\u043c\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c4f\/20c\/fff\/c4f20cfff7c7489fd3fcda552f911bed.PNG\" alt=\"\u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e \u043e\u043a\u043d\u0430 OpenDialog, \u043d\u043e \u044d\u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.\" title=\"\u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e \u043e\u043a\u043d\u0430 OpenDialog, \u043d\u043e \u044d\u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.\" width=\"2174\" height=\"1056\"\/><\/p>\n<div><figcaption>\u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e \u043e\u043a\u043d\u0430 OpenDialog, \u043d\u043e \u044d\u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0410 \u043f\u043e\u043a\u0430 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043a\u043e\u0434\u0443 \u0432\u044b\u0448\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0430\u043c\u0431\u043b\u0435\u0440\u044b \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 EntryPoint:<\/p>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void __noreturn EntryPoint() {   int *v0; \/\/ ebx   char v1; \/\/ zf   struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; \/\/ [esp-Ch] [ebp-2Ch] BYREF   void *v3; \/\/ [esp-8h] [ebp-28h]   int *v4; \/\/ [esp-4h] [ebp-24h]   int v5; \/\/ [esp+4h] [ebp-1Ch]   int v6; \/\/ [esp+8h] [ebp-18h]   int v7[5]; \/\/ [esp+Ch] [ebp-14h] BYREF   int savedregs; \/\/ [esp+20h] [ebp+0h] BYREF    v7[0] = 0;   v6 = 0;   v5 = 0;   InitExe();   v0 = Application[0];   v4 = &amp;savedregs;   v3 = &amp;loc_660198;   ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;   __writefsdword(0, (unsigned int)&amp;ExceptionList);   TApplication_Initialize(ExceptionList);   TCustomForm_Create(*v0, 1);   *gvar_00685650 = (int)&amp;loc_595777 + 1;   if ( (unsigned __int8)((int (__stdcall *)(struct _EXCEPTION_REGISTRATION_RECORD *))sub_5966B8)(ExceptionList) )   {     TCustomForm_Show();     TControl_Refresh();     TApplication_SetTitle();     TApplication_CreateForm(gvar_00685784, VMT_6160F8_TMainForm);     TApplication_CreateForm(gvar_006857E8, VMT_601A3C_TSpecialSettingsFrm);     TApplication_CreateForm(gvar_00685A24, VMT_5E1248_TAddressReport);     TApplication_CreateForm(gvar_006858D8, VMT_5DFA00_TSelectPanelsDlg);     TApplication_CreateForm(gvar_006859A0, VMT_5E0224_TSelectLoopsDlg);     TApplication_CreateForm(gvar_00685928, VMT_5E0A50_TSelectZonesDlg);     TApplication_CreateForm(gvar_00685A5C, VMT_603868_TDCRangeFrm);     TApplication_CreateForm(gvar_00685AEC, VMT_6044B8_TDCErrorFrm);     if ( ParamCount() > 1 &amp;&amp; (ParamStr(), WStrFromUStr(v3), LeftStr(v7, 4), WStrEqual(), v1) )     {       TApplication_CreateForm(gvar_006858DC, VMT_5EBFA8_TFXCommHandler);       TApplication_CreateForm(gvar_00685B90, VMT_600974_TAutoConfigFrm);       TApplication_CreateForm(gvar_00685DC8, &amp;off_5BA430);     }     else     {       TApplication_CreateForm(gvar_00685DC4, VMT_5DC858_TFXColSelDlg);       TApplication_CreateForm(gvar_006859C0, VMT_5D0788_TFXCGroupsDlg);       TApplication_CreateForm(gvar_006858DC, VMT_5EBFA8_TFXCommHandler);       TApplication_CreateForm(gvar_006855B8, VMT_6278E8_TAPFillDlg);       TApplication_CreateForm(gvar_00685E28, VMT_5FD8EC_TFileImportDlg);       TApplication_CreateForm(gvar_00685B94, VMT_5FEF7C_TFileExportDlg);       TApplication_CreateForm(gvar_00685DDC, VMT_5E77C8_TConfigInfoDlg);       TApplication_CreateForm(gvar_00685918, VMT_5DEE04_TSelectVisibleDlg);       TApplication_CreateForm(gvar_00685DC8, &amp;off_5BA430);       TApplication_CreateForm(gvar_006855D0, &amp;cls_FXDbgForm_TDbgFrm);       TApplication_CreateForm(gvar_00685E08, (char *)&amp;loc_5B3C7B + 1);       TApplication_CreateForm(gvar_00685C48, VMT_5F23C8_TPreviewForm);       TApplication_CreateForm(gvar_00685E50, &amp;cls_FXEsaFileMerge_TMergeEsaForm);       TApplication_CreateForm(gvar_006855D4, &amp;cls_FXEsaFileMergeReport_TEsaReport);     }     UStrAsg();     *(_BYTE *)(*v0 + 91) = 0;     TApplication_Run();   }   __writefsdword(0, (unsigned int)v4);   UStrClr(&amp;loc_66019F);   WStrArrayClr();   Halt0(); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\"> void EntryPoint(void)  {   undefined *puVar1;   char cVar2;   undefined4 uVar3;   int iVar4;   undefined4 unaff_EBX;   undefined4 *in_FS_OFFSET;   bool bVar5;   undefined4 uStack_30;   undefined *puStack_2c;   undefined *puStack_28;   undefined4 local_20;   undefined4 local_1c;   wchar_t *local_18 [5];      local_18[0] = (wchar_t *)0x0;   local_1c = 0;   local_20 = 0;   puStack_28 = (undefined *)0x65fed4;   @InitExe(&amp;DAT_00658424);   puVar1 = Application;   puStack_2c = &amp;LAB_00660198;   uStack_30 = *in_FS_OFFSET;   *in_FS_OFFSET = &amp;uStack_30;   puStack_28 = &amp;stack0xfffffffc;   TApplication.Initialize(*(undefined4 *)puVar1);   uVar3 = TCustomForm.Create(&amp;LAB_00595778,1,*(undefined4 *)puVar1);   *(undefined4 *)gvar_00685650 = uVar3;   cVar2 = FUN_005966b8(*(undefined4 *)gvar_00685650);   if (cVar2 == '\\0') goto LAB_00660175;   TCustomForm.Show(*(undefined4 *)gvar_00685650);   TControl.Refresh(*(undefined4 *)gvar_00685650);   TApplication.SetTitle(*(undefined4 *)puVar1,&amp;DAT_006601b4);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00616150,gvar_00685784);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00601a94,gvar_006857E8);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e12a0,gvar_00685A24);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dfa58,gvar_006858D8);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e027c,gvar_006859A0);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e0aa8,gvar_00685928);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_006038c0,gvar_00685A5C);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00604510,gvar_00685AEC);   iVar4 = ParamCount();   if (iVar4 &lt; 2) { LAB_00660052:     uStack_30 = 0x660065;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dc8b0,gvar_00685DC4);     uStack_30 = 0x660078;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005d07e0,gvar_006859C0);     uStack_30 = 0x66008b;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ec000,gvar_006858DC);     uStack_30 = 0x66009e;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00627940,gvar_006855B8);     uStack_30 = 0x6600b1;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005fd944,gvar_00685E28);     uStack_30 = 0x6600c4;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005fefd4,gvar_00685B94);     uStack_30 = 0x6600d7;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e7820,gvar_00685DDC);     uStack_30 = 0x6600ea;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dee5c,gvar_00685918);     uStack_30 = 0x6600fd;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ba430,gvar_00685DC8);     uStack_30 = 0x660110;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_0059ab9c,gvar_006855D0);     uStack_30 = 0x660123;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005b3c7c,gvar_00685E08);     uStack_30 = 0x660136;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005f2420,gvar_00685C48);     uStack_30 = 0x660149;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005babf0,gvar_00685E50);     uStack_30 = 0x66015c;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005b3ef4,gvar_006855D4);   }   else {     ParamStr(2,&amp;local_20);     @WStrFromUStr(&amp;local_1c,local_20);     uStack_30 = 0x660005;     LeftStr(local_1c,4,local_18);     uStack_30 = 0x660012;     bVar5 = @WStrEqual(local_18[0],L\"auto\");     if (!bVar5) goto LAB_00660052;     uStack_30 = 0x660027;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ec000,gvar_006858DC);     uStack_30 = 0x66003a;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_006009cc,gvar_00685B90);     uStack_30 = 0x66004d;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ba430,gvar_00685DC8);   }   uStack_30 = 0x660168;   @UStrAsg(*(int *)puVar1 + 0x50,0);   *(undefined *)(*(int *)puVar1 + 0x5b) = 0;   uStack_30 = 0x660175;   TApplication.Run(*(undefined4 *)puVar1); LAB_00660175:   *in_FS_OFFSET = puStack_2c;   puStack_28 = (undefined *)0x66018a;   @UStrClr(&amp;local_20,puStack_2c,unaff_EBX);   puStack_28 = (undefined *)0x660197;   @WStrArrayClr(&amp;local_1c,2);   return; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0443\u0442 \u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f (\u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435 \u0413\u0438\u0434\u0440\u0430 \u0432\u044b\u0434\u0430\u043b\u0430), \u043d\u043e \u0441\u0443\u0442\u044c \u0443 \u0432\u0441\u0435\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f &#8212; \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 FUN_005966b8. <\/p>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void __fastcall sub_5966B8(int a1) {   int v1; \/\/ esi   int v2; \/\/ ebx   double v3; \/\/ st7   double v4; \/\/ st7   char v5; \/\/ bl   int v6; \/\/ esi   char v7; \/\/ zf   const WCHAR *v8; \/\/ eax   const WCHAR *v9; \/\/ eax   double v10; \/\/ st7   int v11; \/\/ ecx   int v12; \/\/ ecx   int v13; \/\/ ecx   int v14; \/\/ ecx   const WCHAR *v15; \/\/ [esp-14h] [ebp-390h]   const WCHAR *v16; \/\/ [esp-14h] [ebp-390h]   struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; \/\/ [esp-Ch] [ebp-388h] BYREF   void *v18; \/\/ [esp-8h] [ebp-384h]   int *v19; \/\/ [esp-4h] [ebp-380h]   int v20; \/\/ [esp+Ch] [ebp-370h] BYREF   int v21[2]; \/\/ [esp+10h] [ebp-36Ch] BYREF   int v22; \/\/ [esp+18h] [ebp-364h] BYREF   char v23[256]; \/\/ [esp+1Ch] [ebp-360h] BYREF   int v24; \/\/ [esp+11Ch] [ebp-260h] BYREF   int v25; \/\/ [esp+120h] [ebp-25Ch] BYREF   int v26; \/\/ [esp+124h] [ebp-258h] BYREF   int v27; \/\/ [esp+128h] [ebp-254h] BYREF   __int64 v28; \/\/ [esp+12Ch] [ebp-250h] BYREF   double v29; \/\/ [esp+134h] [ebp-248h]   int v30; \/\/ [esp+13Ch] [ebp-240h] BYREF   double v31; \/\/ [esp+140h] [ebp-23Ch]   int v32; \/\/ [esp+148h] [ebp-234h] BYREF   WCHAR pszPath[261]; \/\/ [esp+14Ch] [ebp-230h] BYREF   char v34; \/\/ [esp+357h] [ebp-25h]   int v35; \/\/ [esp+358h] [ebp-24h]   int v36; \/\/ [esp+35Ch] [ebp-20h] BYREF   int v37; \/\/ [esp+360h] [ebp-1Ch] BYREF   int v38; \/\/ [esp+364h] [ebp-18h] BYREF   int v39; \/\/ [esp+368h] [ebp-14h] BYREF   int v40; \/\/ [esp+36Ch] [ebp-10h] BYREF   int v41; \/\/ [esp+370h] [ebp-Ch] BYREF   int v42; \/\/ [esp+374h] [ebp-8h] BYREF   int v43; \/\/ [esp+378h] [ebp-4h] BYREF   int savedregs; \/\/ [esp+37Ch] [ebp+0h] BYREF    v35 = a1;   v19 = &amp;savedregs;   v18 = &amp;loc_596DE0;   ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;   __writefsdword(0, (unsigned int)&amp;ExceptionList);   v34 = 0;   do   {     v1 = 2;     v2 = sub_590CDC(*(_DWORD *)(v35 + 932));     if ( v2 == 7 )       v1 = MessageDlgPosHelp(0, -1, -1, 0);   }   while ( v2 &amp;&amp; v1 != 2 );   if ( v2 > 41 )   {     if ( v2 != 8001 &amp;&amp; v2 != 8002 )     {       if ( v2 != 8003 )       { LABEL_20:         LODWORD(v31) = v2;         BYTE4(v31) = 0;         Format(&amp;v32);         MessageDlgPosHelp(0, -1, -1, 0);       } LABEL_21:       if ( v2 )       {         v34 = 0;         goto LABEL_59;       }       v31 = sub_58FD08(*(_DWORD *)(v35 + 932));       v3 = ((double (__fastcall *)(_DWORD))loc_58FCA8)(*(_DWORD *)(v35 + 932));       if ( v31 - v3 &lt; 60.0 )       {         v29 = sub_58FD08(*(_DWORD *)(v35 + 932));         v4 = ((double (__fastcall *)(_DWORD))loc_58FCA8)(*(_DWORD *)(v35 + 932));         v28 = TRUNC(v29 - v4);         LODWORD(v31) = &amp;v28;         BYTE4(v31) = 16;         Format(&amp;v30);         MessageDlgPosHelp(0, -1, -1, 0);       }       shell32_SHGetSpecialFolderPathW(0, pszPath, 28, 0);       UStrFromWArray(&amp;v27, pszPath, 261);       UStrCat3(&amp;v43, v27, &amp;off_596E0C);       UStrCat3(&amp;v42, v43, &amp;loc_596E38);       UStrFromWArray(&amp;v26, pszPath, 261);       UStrCat3(&amp;v41, v26, &amp;off_596E60);       UStrCat3(&amp;v40, v41, &amp;loc_596E38);       UStrFromWArray(&amp;v25, pszPath, 261);       UStrCat3(&amp;v39, v25, aSchneider);       UStrCat3(&amp;v38, v39, &amp;loc_596E38);       while ( 1 )       {         if ( (unsigned __int8)FileExists(v38) )         {           UStrLAsg(&amp;v37, v38);         }         else if ( (unsigned __int8)FileExists(v40) )         {           UStrLAsg(&amp;v37, v40);         }         else         {           UStrLAsg(&amp;v37, v42);         }         v5 = 0;         v6 = sub_595EF4(LODWORD(dbl_70911C) + 1032);         if ( !v6 )         {           v5 = 0;           UStrEqual(v37, v40);           if ( v7 || (UStrEqual(v37, v42), v7) )           {             if ( !(unsigned __int8)DirectoryExists(v39) )               ForceDirectories(v39);             v15 = (const WCHAR *)UStrToPWChar(v38);             v8 = (const WCHAR *)UStrToPWChar(v37);             kernel32_CopyFileW(v8, v15, 0);           }           goto LABEL_54;         }         if ( (unsigned int)(v6 - 1) &lt; 4 )         {           if ( MessageDlgPosHelp(0, -1, -1, 0) != 6 )           {             v5 = 0;             goto LABEL_54;           }           if ( !(unsigned __int8)sub_5960D8(LODWORD(dbl_70911C), &amp;v36) )           {             v5 = 0;             goto LABEL_54;           }           if ( !(unsigned __int8)DirectoryExists(v39) )             ForceDirectories(v39);         }         else         {           if ( v6 != 5 )             goto LABEL_54;           v10 = ((double (__fastcall *)(_DWORD))loc_58FCA8)(*(_DWORD *)(v35 + 932));           LODWORD(v31) = TRUNC(*(double *)(LODWORD(dbl_70911C) + 1032) - v10);           BYTE4(v31) = 0;           Format(&amp;v24);           if ( MessageDlgPosHelp(0, -1, -1, 0) != 6 )           {             v5 = 0;             goto LABEL_54;           }           if ( !(unsigned __int8)sub_5960D8(LODWORD(dbl_70911C), &amp;v36) )           {             v5 = 0;             goto LABEL_54;           }           if ( !(unsigned __int8)DirectoryExists(v39) )             ForceDirectories(v39);         }         v16 = (const WCHAR *)UStrToPWChar(v38);         v9 = (const WCHAR *)UStrToPWChar(v36);         kernel32_CopyFileW(v9, v16, 0);         v5 = 1; LABEL_54:         if ( !v5 )         {           if ( v6 == 5 )             v6 = 0;           if ( !v6 )           {             LStrFromString(ExceptionList);             sub_5912B4(v21[1], &amp;v22);             LStrToString(v23, v22, 255);             LOBYTE(v11) = 50;             PStrNCpy(LODWORD(dbl_70911C) + 166, v23, v11);             LStrFromString(v18);             sub_5912B4(v20, v21);             LStrToString(v23, v21[0], 255);             LOBYTE(v12) = 25;             PStrNCpy(LODWORD(dbl_70911C) + 140, v23, v12);             *(_BYTE *)gvar_0068564C = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 1) != 0;             *(_BYTE *)gvar_00685670 = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 2) != 0;             *(_BYTE *)gvar_00685A88 = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 4) != 0;             *(_BYTE *)gvar_00685DE8 = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 8) != 0;             *(_BYTE *)gvar_00685800 = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 0x10) != 0;             *(_BYTE *)gvar_00685DFC = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 0x20) != 0;             *(_BYTE *)gvar_00685964 = (*(_BYTE *)(LODWORD(dbl_70911C) + 138) &amp; 0x40) != 0;             *(_BYTE *)gvar_00685C5C = *(char *)(LODWORD(dbl_70911C) + 138) &lt; 0;             v34 = 1;           } LABEL_59:           __writefsdword(0, (unsigned int)ExceptionList);           v19 = (int *)&amp;loc_596DE7;           LStrArrayClr(&amp;v20, 4);           UStrArrayClr(&amp;v24, 4, v13);           UStrClr(v19);           UStrClr(v19);           UStrArrayClr(&amp;v36, 8, v14);           JUMPOUT(0x596DF1);         }       }     }   }   else if ( v2 != 41 )   {     if ( !v2 || v2 == 7 )       goto LABEL_21;     if ( v2 != 12 &amp;&amp; v2 != 25 )       goto LABEL_20;   }   MessageDlgPosHelp(0, -1, -1, 0);   goto LABEL_21; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\"> void FUN_005966b8(int param_1)  {   bool bVar1;   wchar_t *pwVar2;   char cVar3;   uint uVar4;   int iVar5;   LPCWSTR pWVar6;   LPCWSTR pWVar7;   int iVar8;   wchar_t *unaff_EBX;   undefined4 unaff_ESI;   wchar_t *unaff_EDI;   int *in_FS_OFFSET;   bool bVar9;   float10 in_ST0;   float10 in_ST1;   float10 in_ST2;   undefined4 param_11;   undefined4 local_374;   undefined4 local_370;   undefined4 local_36c;   undefined4 local_368;   undefined local_364 [256];   undefined4 local_264;   wchar_t *local_260;   wchar_t *local_25c;   wchar_t *local_258;   undefined4 local_254 [2];   double local_24c;   undefined4 local_244;   undefined8 local_240;   undefined4 local_238;   WCHAR local_234 [252];   undefined4 uStackY_3c;   undefined4 uStackY_38;   BOOL BVar10;   undefined4 *puVar11;   int local_24;   undefined *local_20;   wchar_t *local_1c;   wchar_t *local_c;   wchar_t *local_8;      local_1c = (wchar_t *)&amp;stack0xfffffffc;   iVar8 = 0x6e;   do {     local_8 = (wchar_t *)0x0;     iVar8 = iVar8 + -1;   } while (iVar8 != 0);   local_20 = &amp;LAB_00596de0;   local_24 = *in_FS_OFFSET;   *in_FS_OFFSET = (int)&amp;local_24;   do {     iVar8 = 2;     puVar11 = (undefined4 *)(param_1 + 0x3a4);     param_1 = 0x5966f7;     uVar4 = FUN_00590cdc(*puVar11);     if (uVar4 == 0x70) {       param_1 = 0;       uStackY_38 = 0x59672d;       iVar8 = MessageDlgPosHelp((&amp;PTR_u_USB_License_key_could_not_be_fou_006829f0)                                 [(uint)(byte)*gvar_00685658 * 0xe],1,0x28);     }   } while ((uVar4 != 0) &amp;&amp; (iVar8 != 2));   if ((int)uVar4 &lt; 0x2a) {     if (uVar4 == 0x29) {       param_1 = 0;       uStackY_38 = 0x5967af;       MessageDlgPosHelp((&amp;PTR_u_The_USB_License_key_has_expired_00682a0c)                         [(uint)(byte)*gvar_00685658 * 0xe],1,4);       goto LAB_005968a3;     }     if ((uVar4 == 0) || (uVar4 == 7)) goto LAB_005968a3;     if ((uVar4 == 0xc) || (uVar4 == 0x19)) {       param_1 = 0;       uStackY_38 = 0x59684b;       MessageDlgPosHelp((&amp;PTR_u_USB_License_key_clock_failure_00682a04)                         [(uint)(byte)*gvar_00685658 * 0xe],1,4);       goto LAB_005968a3;     }   }   else {     if (uVar4 == 0x1f41) {       param_1 = 0;       uStackY_38 = 0x5967e3;       MessageDlgPosHelp((&amp;PTR_u_USB_License_key_is_invalid_006829fc)                         [(uint)(byte)*gvar_00685658 * 0xe],1,4);       goto LAB_005968a3;     }     if (uVar4 == 0x1f42) {       param_1 = 0;       uStackY_38 = 0x596817;       MessageDlgPosHelp((&amp;PTR_u_The_USB_License_key_has_expired_00682a0c)                         [(uint)(byte)*gvar_00685658 * 0xe],1,4);       goto LAB_005968a3;     }     if (uVar4 == 0x1f43) goto LAB_005968a3;   }   local_240._0_5_ = (uint5)uVar4;   Format((&amp;PTR_u_USB_License_key_error:_%d_006829f8)[(uint)(byte)*gvar_00685658 * 0xe],&amp;local_240 ,0)   ;   param_1 = 0;   uStackY_38 = 0x5968a3;   MessageDlgPosHelp(local_238,1,4); LAB_005968a3:   if (uVar4 == 0) {     iVar8 = 0x5968be;     FUN_0058fd08(*(undefined4 *)(param_1 + 0x3a4));     local_240 = (double)in_ST0;     FUN_0058fca8(*(undefined4 *)(iVar8 + 0x3a4));     if ((float10)local_240 - in_ST1 &lt; (float10)60.0) {       puVar11 = &amp;local_244;       FUN_0058fd08(param_11);       local_24c = (double)in_ST2;       FUN_0058fca8(puVar11[0xe9]);       local_254[0] = @TRUNC();       local_240._0_5_ = CONCAT14(0x10,local_254);       Format((&amp;PTR_u_The_USB_License_key_for_this_sof_006829f4)[(uint)(byte)*gvar_00685658 * 0xe] ,              &amp;local_240,0);       uStackY_38 = 0x59697f;       MessageDlgPosHelp(local_244,0,4);     }     uStackY_38 = 0x596991;     shell32.SHGetSpecialFolderPathW((HWND)0x0,local_234,0x1c,0);     @UStrFromWArray(&amp;local_258,local_234,0x105);     @UStrCat3(&amp;local_8,local_258,L\"\\\\Esmi\\\\WinFXNet\\\\\");     @UStrCat3(&amp;local_c,local_8,L\"winfxnet.lic\");     @UStrFromWArray(&amp;local_25c,local_234,0x105);     @UStrCat3((wchar_t **)&amp;stack0xfffffff0,local_25c,L\"\\\\Pelco\\\\WinFXNet\\\\\");     @UStrCat3((wchar_t **)&amp;stack0xffffffec,unaff_EBX,L\"winfxnet.lic\");     @UStrFromWArray(&amp;local_260,local_234,0x105);     @UStrCat3((wchar_t **)&amp;stack0xffffffe8,local_260,L\"\\\\Schneider Electric\\\\WinFXNet\\\\\");     @UStrCat3(&amp;local_1c,unaff_EDI,L\"winfxnet.lic\");     do {       cVar3 = FileExists(local_1c);       if (cVar3 == '\\0') {         cVar3 = FileExists(unaff_ESI);         if (cVar3 == '\\0') {           iVar8 = 0x596a79;           @UStrLAsg(&amp;local_20,local_c);         }         else {           iVar8 = 0x596a6c;           @UStrLAsg(&amp;local_20,unaff_ESI);         }       }       else {         iVar8 = 0x596a53;         @UStrLAsg(&amp;local_20,local_1c);       }       bVar1 = false;       local_24 = DAT_0070911c + 0x408;       iVar5 = FUN_00595ef4(DAT_0070911c,local_20,DAT_0070911c + 4);       if (iVar5 == 0) {         bVar1 = false;         bVar9 = true;         @UStrEqual(local_20,unaff_ESI);         if ((bVar9) || (@UStrEqual(local_20,local_c), bVar9)) {           cVar3 = DirectoryExists(unaff_EDI);           if (cVar3 == '\\0') {             ForceDirectories(unaff_EDI);           }           BVar10 = 0;           pWVar6 = (LPCWSTR)@UStrToPWChar(local_1c);           pWVar7 = (LPCWSTR)@UStrToPWChar(local_20);           uStackY_38 = 0x596af8;           kernel32.CopyFileW(pWVar7,pWVar6,BVar10);         }       }       else if (iVar5 - 1U &lt; 4) {         uStackY_38 = 0;         uStackY_3c = 0x596b30;         iVar8 = MessageDlgPosHelp(*(undefined4 *)                                    ((uint)(byte)*gvar_00685658 * 0x38 + 0x6829d4 + iVar5 * 4),1,3) ;         if (iVar8 == 6) {           cVar3 = FUN_005960d8(DAT_0070911c,&amp;local_24);           if (cVar3 == '\\0') {             bVar1 = false;           }           else {             cVar3 = DirectoryExists(unaff_EDI);             if (cVar3 == '\\0') {               ForceDirectories(unaff_EDI);             }             BVar10 = 0;             pWVar6 = (LPCWSTR)@UStrToPWChar(local_1c);             pWVar7 = (LPCWSTR)@UStrToPWChar(local_24);             uStackY_38 = 0x596b70;             kernel32.CopyFileW(pWVar7,pWVar6,BVar10);             bVar1 = true;           }         }         else {           bVar1 = false;         }       }       else if (iVar5 == 5) {         FUN_0058fca8(*(undefined4 *)(iVar8 + 0x3a4));         uVar4 = @TRUNC();         local_240._0_5_ = (uint5)uVar4;         Format((&amp;PTR_u_The_license_information_file_for_006829e8)[(uint)(byte)*gvar_00685658 * 0x e],                &amp;local_240,0);         uStackY_38 = 0;         uStackY_3c = 0x596bfc;         iVar8 = MessageDlgPosHelp(local_264,0,3);         if (iVar8 == 6) {           cVar3 = FUN_005960d8(DAT_0070911c,&amp;local_24);           if (cVar3 == '\\0') {             bVar1 = false;           }           else {             cVar3 = DirectoryExists(unaff_EDI);             if (cVar3 == '\\0') {               ForceDirectories(unaff_EDI);             }             BVar10 = 0;             pWVar6 = (LPCWSTR)@UStrToPWChar(local_1c);             pWVar7 = (LPCWSTR)@UStrToPWChar(local_24);             uStackY_38 = 0x596c3c;             kernel32.CopyFileW(pWVar7,pWVar6,BVar10);             bVar1 = true;           }         }         else {           bVar1 = false;         }       }     } while (bVar1);     if (iVar5 == 5) {       iVar5 = 0;     }     if (iVar5 == 0) {       @LStrFromString(&amp;local_36c,DAT_0070911c + 0xa6,0);       local_24 = 0x596c86;       FUN_005912b4(local_36c,&amp;local_368);       local_24 = 0x596c9c;       @LStrToString(local_364,local_368,0xff);       local_24 = 0x596cb0;       @PStrNCpy(DAT_0070911c + 0xa6,local_364,0x32);       local_24 = 0x596cc8;       @LStrFromString(&amp;local_374,DAT_0070911c + 0x8c,0);       local_24 = 0x596cd9;       FUN_005912b4(local_374,&amp;local_370);       local_24 = 0x596cef;       @LStrToString(local_364,local_370,0xff);       local_24 = 0x596d03;       @PStrNCpy(DAT_0070911c + 0x8c,local_364,0x19);       *gvar_0068564C = (*(byte *)(DAT_0070911c + 0x8a) &amp; 1) != 0;       *gvar_00685670 = (*(byte *)(DAT_0070911c + 0x8a) &amp; 2) != 0;       *gvar_00685A88 = (*(byte *)(DAT_0070911c + 0x8a) &amp; 4) != 0;       *gvar_00685DE8 = (*(byte *)(DAT_0070911c + 0x8a) &amp; 8) != 0;       *gvar_00685800 = (*(byte *)(DAT_0070911c + 0x8a) &amp; 0x10) != 0;       *gvar_00685DFC = (*(byte *)(DAT_0070911c + 0x8a) &amp; 0x20) != 0;       *gvar_00685964 = (*(byte *)(DAT_0070911c + 0x8a) &amp; 0x40) != 0;       *gvar_00685C5C = (*(byte *)(DAT_0070911c + 0x8a) &amp; 0x80) != 0;     }   }   pwVar2 = local_1c;   *in_FS_OFFSET = local_24;   local_1c = (wchar_t *)&amp;LAB_00596de7;   local_20 = (undefined *)0x596dac;   @LStrArrayClr(&amp;local_374,4,pwVar2);   local_20 = (undefined *)0x596dbc;   @UStrArrayClr(&amp;local_264,4);   local_20 = (undefined *)0x596dc7;   @UStrClr(&amp;local_244);   local_20 = (undefined *)0x596dd2;   @UStrClr(&amp;local_238);   local_20 = (undefined *)0x596ddf;   @UStrArrayClr(&amp;local_24,8);   return; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0430\u043c \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 FUN_00590cdc, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0446\u0438\u043a\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430, \u0442\u043e \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435. \u041f\u0440\u043e\u0431\u0443\u0435\u043c &#8212; \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c x32dbg, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c exe\u0448\u043d\u0438\u043a, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 005966f2 (\u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0433\u0438\u0434\u0440\u044b):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cb\/f8e\/ab0\/0cbf8eab0f1c4f37e9a0dfc9e975b85a.PNG\" width=\"2560\" height=\"539\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>x32dbg<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/90f\/a6d\/892\/90fa6d8929173fa1c74a97ed4b9819e8.png\" alt=\"\u0429\u0435\u043b\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0432 \u043f\u043e\u043b\u0435 CPU, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u041f\u0435\u0440\u0435\u0439\u0442\u0438 -> \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435&#187; title=&#187;\u0429\u0435\u043b\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0432 \u043f\u043e\u043b\u0435 CPU, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u041f\u0435\u0440\u0435\u0439\u0442\u0438 -> \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435&#187; width=&#187;1003&#8243; height=&#187;975&#8243; data-src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/90f\/a6d\/892\/90fa6d8929173fa1c74a97ed4b9819e8.png&#187;\/><\/p>\n<div><figcaption>\u0429\u0435\u043b\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0432 \u043f\u043e\u043b\u0435 CPU, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u041f\u0435\u0440\u0435\u0439\u0442\u0438 -> \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae1\/ef9\/cd2\/ae1ef9cd24a0b84a30dfd4048c61c7ea.PNG\" alt=\"\u0412\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0436\u043c\u0435\u043c \u043e\u043a\u0435\u0439. \u041f\u043e F2 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u043d\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u044b\u0448\u0435.\" title=\"\u0412\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0436\u043c\u0435\u043c \u043e\u043a\u0435\u0439. \u041f\u043e F2 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u043d\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u044b\u0448\u0435.\" width=\"1004\" height=\"669\"\/><\/p>\n<div><figcaption>\u0412\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0436\u043c\u0435\u043c \u043e\u043a\u0435\u0439. \u041f\u043e F2 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u043d\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u044b\u0448\u0435.<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f \u0437\u0430\u043c\u0435\u043d\u044f\u044e \u043d\u0430 <code>mov eax, 0x0<\/code> \u0438 \u0441\u043c\u043e\u0442\u0440\u044e, \u0447\u0442\u043e \u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442:<\/p>\n<details class=\"spoiler\">\n<summary>x32dbg<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d23\/12b\/976\/d2312b9760313dffcd9832675587cca1.PNG\" alt=\"\u041f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\" title=\"\u041f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\" width=\"1555\" height=\"1024\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65bbb162aeb5569d7b2e1994\" data-style=\"\" id=\"65bbb162aeb5569d7b2e1994\" width=\"\"><\/div>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e! \u041c\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0443\u0436\u0435 \u041f\u041e. \u0424\u0430\u0439\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 HASP \u043a\u043b\u044e\u0447\u0430), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0435\u0433\u043e \u0438 \u043e\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e (\\AppData\\Local\\Schneider Electric\\WinFXNet).<\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0447\u0438\u0449\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043a\u043b\u044e\u0447\u0430. \u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a IDR. \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b3\/cd3\/406\/2b3cd34066a6b4a872b784f7d55f2e87.PNG\" alt=\"TMainForm\" title=\"TMainForm\" width=\"2560\" height=\"1391\"\/><\/p>\n<div><figcaption>TMainForm<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0433\u043b\u0430\u0437\u0430 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0445\u0438\u0442\u0440\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 &#8212; LicTimer, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>call 0061EFB8<\/code>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0430\u043a\u043e\u0433\u043e:<\/p>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void FUN_0061efb8(void)  {   undefined *puVar1;   int iVar2;   int iVar3;   undefined4 *in_FS_OFFSET;   undefined4 uStack_2c;   undefined *puStack_28;   undefined *puStack_24;   int local_14;   undefined local_10;   undefined4 local_c [2];      puStack_24 = &amp;stack0xfffffffc;   local_c[0] = 0;   puStack_28 = &amp;LAB_0061f0de;   uStack_2c = *in_FS_OFFSET;   *in_FS_OFFSET = &amp;uStack_2c;   if (*gvar_00685734 == '\\0') {     iVar3 = 0;     puStack_24 = &amp;stack0xfffffffc;     do {       iVar2 = FUN_005054a9();       if (iVar2 != 0) {         iVar2 = FUN_005054a9();       }       if (iVar2 != 0) {         if (iVar2 == 7) {           iVar3 = MessageDlgPosHelp(*(undefined4 *)                                      (PTR_PTR_u_The_license_information_file_cou_0068570c +                                      (uint)(byte)*gvar_00685658 * 0x38 + 0x18),1,0x28,0,0xffffffff ,                                     0xffffffff,0);         }         else {           local_10 = 0;           local_14 = iVar2;           Format(*(undefined4 *)                   (PTR_PTR_u_The_license_information_file_cou_0068570c +                   (uint)(byte)*gvar_00685658 * 0x38 + 0x20),&amp;local_14,0,local_c);           iVar3 = MessageDlgPosHelp(local_c[0],1,4,0,0xffffffff,0xffffffff,0);         }       }     } while (((iVar2 != 0) &amp;&amp; (iVar3 != 2)) &amp;&amp; (iVar3 != 1));     FUN_005055e9();   }   puVar1 = puStack_24;   *in_FS_OFFSET = uStack_2c;   puStack_24 = &amp;LAB_0061f0e5;   puStack_28 = (undefined *)0x61f0dd;   @UStrClr(local_c,uStack_2c,puVar1);   return; } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0443\u0436\u0435 \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u0434\u0435\u0442 \u0432\u043d\u043e\u0432\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e. \u0412 IDR \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 File -> Save Delphi Project, \u0447\u0442\u043e \u043c\u044b \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c. \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0444\u0430\u0439\u043b\u0430\u043c \u0432 Notepad++ \u0438 \u043f\u043e\u0438\u0449\u0435\u043c \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/15d\/599\/9cb\/15d5999cbde88a4e441d54ab3923440e.png\" alt=\"10 \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 TMainForm \" title=\"10 \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 TMainForm \" width=\"1444\" height=\"1168\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15d\/599\/9cb\/15d5999cbde88a4e441d54ab3923440e.png\"\/><\/p>\n<div><figcaption>10 \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0444\u043e\u0440\u043c\u0435 TMainForm <\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 x32dbg &#8212; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c, nop&#8217;\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 jne \u043d\u0430 je (\u0438\u043d\u0430\u0447\u0435 \u0442\u0430\u043c \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435).<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65bc4edaaeb5569d7b2e6cbe\" data-style=\"\" id=\"65bc4edaaeb5569d7b2e6cbe\" width=\"\"><\/div>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451 &#8212; \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0435\u0437 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f HASP \u043a\u043b\u044e\u0447\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043d\u0430 \u0447\u0442\u043e \u0432\u043b\u0438\u0438\u044f\u0435\u0442 \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u042d\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0434\u043e\u0434\u0435\u043b\u0430\u044e (\u0438\u043b\u0438 \u0434\u0430\u0434\u0443\u0442 \u0434\u043e\u0434\u0435\u043b\u0430\u0442\u044c), \u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0443. \u041d\u043e \u0430 \u043f\u043e\u043a\u0430 (\u0432 \u0432\u0438\u0434\u0435 \u0431\u043e\u043d\u0443\u0441\u0430) \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u0434\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<h2>\u0424\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0435\u0440\u0435\u0437 HEX \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0430\u043c \u0444\u0430\u0439\u043b:<\/p>\n<details class=\"spoiler\">\n<summary>HEX lic<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82a\/409\/430\/82a409430b7f186c376d2c61e80facbf.PNG\" width=\"787\" height=\"889\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0424\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 512 \u0431\u0430\u0439\u0442, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0432\u044b\u0435 127 &#8212; \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0431\u0430\u0439\u0442. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0432\u044b\u0448\u0435, \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e OpenDialog &#8212; \u0432\u043e\u0442 \u043d\u0430 \u043d\u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442, \u043d\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0445\u0438\u0442\u0440\u0435\u0435. \u041f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0446\u0438\u043a\u043b \u0441 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0430\u0439\u043b\u0430, \u0432\u044b\u0439\u0434\u0435\u0442 \u043e\u043a\u043d\u043e, \u0447\u0442\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0435\u0449\u0451 N \u0434\u043d\u0435\u0439 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0430\u0439\u043b. \u0412 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0432 x32dbg \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u0433\u0434\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0447\u0438\u0442\u0430\u043b\u0441\u044f \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u0434\u0430\u043c\u043f\u0435 \u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u043d\u043e\u0432\u044c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b, \u0436\u043c\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u043d\u0430\u0448 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442. \u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f FUN_00595d28.<\/p>\n<details class=\"spoiler\">\n<summary>Assambler<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"assembly\"> 00595D28    push        ebx  00595D29    push        esi  00595D2A    mov         esi,edx  00595D2C    movzx       edx,byte ptr [esi+80]  00595D33    mov         cl,7E  00595D35    lea         eax,[esi+82]  00595D3B    movzx       ebx,dl  00595D3E    movzx       ebx,byte ptr [esi+ebx]  00595D42    not         bl  00595D44    sub         byte ptr [eax],bl  00595D46    inc         edx  00595D47    and         dl,7F  00595D4A    inc         eax  00595D4B    dec         cl >00595D4D    jne         00595D3B  00595D4F    mov         al,1  00595D51    pop         esi  00595D52    pop         ebx  00595D53    ret<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\"> undefined4 FUN_00595d28(undefined4 param_1,int param_2)  {   char *pcVar1;   char cVar2;   byte bVar3;      bVar3 = *(byte *)(param_2 + 0x80);   cVar2 = '~';   pcVar1 = (char *)(param_2 + 0x82);   do {     *pcVar1 = *pcVar1 - ~*(byte *)(param_2 + (uint)bVar3);     bVar3 = bVar3 + 1 &amp; 0x7f;     pcVar1 = pcVar1 + 1;     cVar2 = cVar2 + -1;   } while (cVar2 != '\\0');   return CONCAT31((int3)((uint)pcVar1 >> 8),1); } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">char __fastcall sub_595D28(int a1, int a2) {   int v3; \/\/ edx   char v4; \/\/ cl   _BYTE *v5; \/\/ eax    v3 = *(unsigned __int8 *)(a2 + 128);   v4 = 126;   v5 = (_BYTE *)(a2 + 130);   do   {     *v5 += *(_BYTE *)(a2 + (unsigned __int8)v3++) + 1;     LOBYTE(v3) = v3 &amp; 0x7F;     ++v5;     --v4;   }   while ( v4 );   return 1; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u043f\u0430\u043c\u044f\u0442\u0438, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438:<\/p>\n<details class=\"spoiler\">\n<summary>x32dbg<\/summary>\n<div class=\"spoiler__content\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65bc5590315cc3d4a1c39e75\" data-style=\"\" id=\"65bc5590315cc3d4a1c39e75\" width=\"\"><\/div>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65bc55b0a5e031d47d3f4e97\" data-style=\"\" id=\"65bc55b0a5e031d47d3f4e97\" width=\"\"><\/div>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0437\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 EDX &#8212; \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 0000060, \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e 7E, \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442\u0441\u044f (\u043f\u043e\u0441\u043b\u0435 <code>and dl,7F<\/code> ) \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043e 5D \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 127 \u0431\u0430\u0439\u0442 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u043a\u043e\u0434\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0447\u0435\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f <code>[esi+80]<\/code> , \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0444\u0440\u0430\u0437\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0434\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441\u0447\u0435\u0442. \u0413\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0430\u0440\u0448 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u041e\u0447\u0435\u043d\u044c \u0432\u0435\u0437\u0451\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u0430, \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0430\u043d\u0442\u0438\u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442 (\u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442). \u0412 \u0446\u0435\u043b\u043e\u043c, \u0435\u0441\u043b\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 HASP, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043a\u043b\u044e\u0447\u0430, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043a\u043b\u044e\u0447 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0445\u043e\u0442\u044f \u0431\u044b.  \u041d\u0443 \u0430 \u043f\u0440\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u0434\u043b\u044f \u041f\u041e \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u043d\u0430\u0434\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/790564\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">94.98% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430<\/span><span class=\"tm-article-poll__answer-votes\">227<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 94.98%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">4.6% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442<\/span><span class=\"tm-article-poll__answer-votes\">11<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 4.6%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0.42% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0445\u0432\u0430\u0442\u0430\u0435\u0442<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0.42%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 239 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 17 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \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\/790564\/\"> https:\/\/habr.com\/ru\/articles\/790564\/<\/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<h2>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h2>\n<p>\u0412 \u0441\u0444\u0435\u0440\u0435 \u0410\u0421\u0423 \u0422\u041f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u041f\u041e, \u043d\u043e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u041f\u041e \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0430\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u043f\u043e\u043a\u0438\u043d\u0443\u043b\u0438 \u0420\u0424, \u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u041f\u041e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 WinFXNet &#8212; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f Schneider Electric (ESMI) \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0446\u0438\u0439 \u043f\u043e\u0436\u0430\u0440\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0438\u0438 Esmi FX. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0437-\u0437\u0430 \u0441\u0430\u043d\u043a\u0446\u0438\u0439, \u043a\u043b\u044e\u0447 USB Esmi FX FFS00393016 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043d\u0435\u043b\u044c\u0437\u044f, \u0430 \u043e\u043d, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 4-\u043b\u0435\u0442\u043d\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434. \u0423 \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u043f\u043b\u044e\u0441 \u0441\u043a\u043e\u0440\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0430 \u0441\u0430\u043c\u043e \u041f\u041e (\u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 lic). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u044b \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043e\u0431\u043e\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443.<\/p>\n<p><strong>Disclaimer:<\/strong>\u00a0\u0414\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432\u00a0<strong>\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c.\u00a0<\/strong>\u0425\u043e\u0442\u044f, \u043f\u043e\u043d\u0438\u043c\u0430\u044f \u0432\u0441\u044e \u0431\u0435\u0437\u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0436\u0438\u0437\u043d\u044c, \u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c. \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u0430\u043a \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<h2>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h2>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443, \u043a\u0430\u043a \u044f \u0438\u0441\u043a\u0430\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043c\u0435\u0448\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u0414\u043b\u044f \u0438\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>Detect It Easy (DiE) (<a href=\"https:\/\/github.com\/horsicq\/Detect-It-Easy\/\" rel=\"noopener noreferrer nofollow\">github<\/a>) &#8212; \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0442\u0438\u043f\u0430 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>Ghidra (<a href=\"https:\/\/github.com\/NationalSecurityAgency\/ghidra\" rel=\"noopener noreferrer nofollow\">github<\/a>) \u043b\u0438\u0431\u043e IDA\/Binary Ninja &#8212; \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>x64dbg (<a href=\"https:\/\/github.com\/x64dbg\/x64dbg\" rel=\"noopener noreferrer nofollow\">github<\/a>) \u043b\u0438\u0431\u043e \u043b\u044e\u0431\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0432\u0430\u043c\u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440.<\/p>\n<\/li>\n<li>\n<p>Interactive Delphi Reconstructor (IDR) (<a href=\"https:\/\/github.com\/crypto2011\/IDR\" rel=\"noopener noreferrer nofollow\">github<\/a>) &#8212; \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434 Delphi.<\/p>\n<\/li>\n<li>\n<p>Dhrake <a href=\"https:\/\/github.com\/huettenhain\/dhrake\" rel=\"noopener noreferrer nofollow\">(github)<\/a> &#8212; \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043b\u044f Ghidr&#8217;\u044b, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 Delphi \u043f\u043e\u0441\u043b\u0435 IDR.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0430\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 &#8212; \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043b\u0438\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/OlegBezverhii\/WinFXNet-SchEl\" rel=\"noopener noreferrer nofollow\">github<\/a> &#8212; \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0436\u0438\u0432\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u0430 \u0447\u0435\u043c \u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 (\u0438\u0437 \u0442\u0435\u0433\u043e\u0432 \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442 \u044f \u0434\u0443\u043c\u0430\u044e \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c):<\/p>\n<figure class=\"full-width\">\n<div><figcaption>Delphi 2010<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Delphi 2010 \u0433\u043e\u0434\u0430 &#8212; \u0437\u043d\u0430\u0447\u0438\u0442 IDR \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u044b. \u0422\u0430\u043a \u0436\u0435 DiE \u043d\u0430\u043c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u0441 NetHASP\/Hardlock dongle.<\/p>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c IDR, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u044b \u0441 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0448\u0442\u0430\u043c\u043f\u0430\u043c\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 exe \u0444\u0430\u0439\u043b. \u0416\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e &#171;Tools -> IDC generator&#187;:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>IDC generator<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 idc \u0444\u0430\u0439\u043b <\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0443\u0442\u043a\u0430 \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; IDR \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u043e\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e IDA \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0451 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0432 idc, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0435\u043d\u043d\u044b\u0439 IDC-\u0441\u043a\u0440\u0438\u043f\u0442: \u0432 IDA Pro \u0436\u043c\u0435\u043c File \u2192 Script File&#8230;, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0436\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b&#187; title=&#187;\u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 View -> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b&#187; width=&#187;1705&#8243; height=&#187;1064&#8243; data-src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/632\/7f0\/6cb\/6327f06cbb9a46d662f424f8cfcf2c51.png&#187;\/><\/p>\n<div><figcaption>\u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 View -> Recent scripts \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\">\n<div><figcaption>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0443 IDA \u0432 \u043c\u0435\u043d\u044e Options \u2192 Compiler \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 Delphi (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0438\u0442 C).<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 Ghidra \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 Dhrake:<\/p>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Script Directories<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u042f \u043f\u043e\u043b\u043e\u0436\u0443 \u0432 USER_HOME\/ghidra_scripts<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0451, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 &#8212; DhrakeInit.java \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0448 idc \u0444\u0430\u0439\u043b, \u0436\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a IDR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0441\u0442\u0430\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u043b \u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <strong>EntryPoint<\/strong>. IDR \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u044b Src:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0443\u0433\u043d\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u0442 \u0432 \u043a\u043e\u0434 \u043d\u0430 Delphi:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430 TStartUpForm &#8212; \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b, \u043f\u0440\u044f\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0441\u0443\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0412 IDR \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Forms, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043a \u0447\u0435\u043c\u0443:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e \u043e\u043a\u043d\u0430 OpenDialog, \u043d\u043e \u044d\u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0410 \u043f\u043e\u043a\u0430 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043a\u043e\u0434\u0443 \u0432\u044b\u0448\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0430\u043c\u0431\u043b\u0435\u0440\u044b \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 EntryPoint:<\/p>\n<details class=\"spoiler\">\n<summary>IDA<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">void __noreturn EntryPoint() {   int *v0; \/\/ ebx   char v1; \/\/ zf   struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; \/\/ [esp-Ch] [ebp-2Ch] BYREF   void *v3; \/\/ [esp-8h] [ebp-28h]   int *v4; \/\/ [esp-4h] [ebp-24h]   int v5; \/\/ [esp+4h] [ebp-1Ch]   int v6; \/\/ [esp+8h] [ebp-18h]   int v7[5]; \/\/ [esp+Ch] [ebp-14h] BYREF   int savedregs; \/\/ [esp+20h] [ebp+0h] BYREF    v7[0] = 0;   v6 = 0;   v5 = 0;   InitExe();   v0 = Application[0];   v4 = &amp;savedregs;   v3 = &amp;loc_660198;   ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;   __writefsdword(0, (unsigned int)&amp;ExceptionList);   TApplication_Initialize(ExceptionList);   TCustomForm_Create(*v0, 1);   *gvar_00685650 = (int)&amp;loc_595777 + 1;   if ( (unsigned __int8)((int (__stdcall *)(struct _EXCEPTION_REGISTRATION_RECORD *))sub_5966B8)(ExceptionList) )   {     TCustomForm_Show();     TControl_Refresh();     TApplication_SetTitle();     TApplication_CreateForm(gvar_00685784, VMT_6160F8_TMainForm);     TApplication_CreateForm(gvar_006857E8, VMT_601A3C_TSpecialSettingsFrm);     TApplication_CreateForm(gvar_00685A24, VMT_5E1248_TAddressReport);     TApplication_CreateForm(gvar_006858D8, VMT_5DFA00_TSelectPanelsDlg);     TApplication_CreateForm(gvar_006859A0, VMT_5E0224_TSelectLoopsDlg);     TApplication_CreateForm(gvar_00685928, VMT_5E0A50_TSelectZonesDlg);     TApplication_CreateForm(gvar_00685A5C, VMT_603868_TDCRangeFrm);     TApplication_CreateForm(gvar_00685AEC, VMT_6044B8_TDCErrorFrm);     if ( ParamCount() > 1 &amp;&amp; (ParamStr(), WStrFromUStr(v3), LeftStr(v7, 4), WStrEqual(), v1) )     {       TApplication_CreateForm(gvar_006858DC, VMT_5EBFA8_TFXCommHandler);       TApplication_CreateForm(gvar_00685B90, VMT_600974_TAutoConfigFrm);       TApplication_CreateForm(gvar_00685DC8, &amp;off_5BA430);     }     else     {       TApplication_CreateForm(gvar_00685DC4, VMT_5DC858_TFXColSelDlg);       TApplication_CreateForm(gvar_006859C0, VMT_5D0788_TFXCGroupsDlg);       TApplication_CreateForm(gvar_006858DC, VMT_5EBFA8_TFXCommHandler);       TApplication_CreateForm(gvar_006855B8, VMT_6278E8_TAPFillDlg);       TApplication_CreateForm(gvar_00685E28, VMT_5FD8EC_TFileImportDlg);       TApplication_CreateForm(gvar_00685B94, VMT_5FEF7C_TFileExportDlg);       TApplication_CreateForm(gvar_00685DDC, VMT_5E77C8_TConfigInfoDlg);       TApplication_CreateForm(gvar_00685918, VMT_5DEE04_TSelectVisibleDlg);       TApplication_CreateForm(gvar_00685DC8, &amp;off_5BA430);       TApplication_CreateForm(gvar_006855D0, &amp;cls_FXDbgForm_TDbgFrm);       TApplication_CreateForm(gvar_00685E08, (char *)&amp;loc_5B3C7B + 1);       TApplication_CreateForm(gvar_00685C48, VMT_5F23C8_TPreviewForm);       TApplication_CreateForm(gvar_00685E50, &amp;cls_FXEsaFileMerge_TMergeEsaForm);       TApplication_CreateForm(gvar_006855D4, &amp;cls_FXEsaFileMergeReport_TEsaReport);     }     UStrAsg();     *(_BYTE *)(*v0 + 91) = 0;     TApplication_Run();   }   __writefsdword(0, (unsigned int)v4);   UStrClr(&amp;loc_66019F);   WStrArrayClr();   Halt0(); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>Ghidra<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\"> void EntryPoint(void)  {   undefined *puVar1;   char cVar2;   undefined4 uVar3;   int iVar4;   undefined4 unaff_EBX;   undefined4 *in_FS_OFFSET;   bool bVar5;   undefined4 uStack_30;   undefined *puStack_2c;   undefined *puStack_28;   undefined4 local_20;   undefined4 local_1c;   wchar_t *local_18 [5];      local_18[0] = (wchar_t *)0x0;   local_1c = 0;   local_20 = 0;   puStack_28 = (undefined *)0x65fed4;   @InitExe(&amp;DAT_00658424);   puVar1 = Application;   puStack_2c = &amp;LAB_00660198;   uStack_30 = *in_FS_OFFSET;   *in_FS_OFFSET = &amp;uStack_30;   puStack_28 = &amp;stack0xfffffffc;   TApplication.Initialize(*(undefined4 *)puVar1);   uVar3 = TCustomForm.Create(&amp;LAB_00595778,1,*(undefined4 *)puVar1);   *(undefined4 *)gvar_00685650 = uVar3;   cVar2 = FUN_005966b8(*(undefined4 *)gvar_00685650);   if (cVar2 == '\\0') goto LAB_00660175;   TCustomForm.Show(*(undefined4 *)gvar_00685650);   TControl.Refresh(*(undefined4 *)gvar_00685650);   TApplication.SetTitle(*(undefined4 *)puVar1,&amp;DAT_006601b4);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00616150,gvar_00685784);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00601a94,gvar_006857E8);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e12a0,gvar_00685A24);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dfa58,gvar_006858D8);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e027c,gvar_006859A0);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e0aa8,gvar_00685928);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_006038c0,gvar_00685A5C);   TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00604510,gvar_00685AEC);   iVar4 = ParamCount();   if (iVar4 &lt; 2) { LAB_00660052:     uStack_30 = 0x660065;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dc8b0,gvar_00685DC4);     uStack_30 = 0x660078;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005d07e0,gvar_006859C0);     uStack_30 = 0x66008b;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ec000,gvar_006858DC);     uStack_30 = 0x66009e;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_00627940,gvar_006855B8);     uStack_30 = 0x6600b1;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005fd944,gvar_00685E28);     uStack_30 = 0x6600c4;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005fefd4,gvar_00685B94);     uStack_30 = 0x6600d7;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005e7820,gvar_00685DDC);     uStack_30 = 0x6600ea;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005dee5c,gvar_00685918);     uStack_30 = 0x6600fd;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_005ba430,gvar_00685DC8);     uStack_30 = 0x660110;     TApplication.CreateForm(*(undefined4 *)puVar1,&amp;LAB_0059ab9c,gvar_006855D0);  <\/code><\/pre>\n<\/div>\n<\/details>\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-366979","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/366979","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=366979"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/366979\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=366979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=366979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=366979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}