{"id":427490,"date":"2024-07-26T15:00:15","date_gmt":"2024-07-26T15:00:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=427490"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=427490","title":{"rendered":"<span>\u0414\u0435\u0431\u0430\u0436\u0438\u043c \u0431\u0430\u0433\u0438 \u0432 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0435 x64dbg. \u0411\u0435\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0438 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0431\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 IDE \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 IDE \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u0442\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 x64dbg.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aaf\/779\/51c\/aaf77951c1796d0436998e7e3b4fc573.png\" width=\"1600\" height=\"902\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aaf\/779\/51c\/aaf77951c1796d0436998e7e3b4fc573.png\"\/><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p><a href=\"https:\/\/x64dbg.com\">x64dbg<\/a> \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0434\u043b\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0438 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Windows \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0439 &#171;\u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439, \u043f\u0443\u0441\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439&#187; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0412\u043d\u0435\u0448\u043d\u0435 \u043e\u043d \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <a href=\"https:\/\/www.ollydbg.de\">OllyDbg<\/a>, \u043d\u043e \u0441 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044b\u043c \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/037\/2a8\/f0b\/0372a8f0b67ae2e2ec523a1131283d47.png\" width=\"1600\" height=\"951\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/037\/2a8\/f0b\/0372a8f0b67ae2e2ec523a1131283d47.png\"\/><\/figure>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043d\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <a href=\"https:\/\/sourceforge.net\/projects\/x64dbg\/files\/snapshots\/\">\u0440\u0430\u0437 \u0432 \u043c\u0435\u0441\u044f\u0446<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0438-\u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438\u0434\u0451\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/tree\/cross-platform\">\u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438<\/a>.<\/p>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio 2022 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Windows Vista, \u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u043d\u0430 Windows Vista \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/debugger\/remote-debugging?view=vs-2022#supported-operating-systems\">\u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c Windows 7.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432\u0441\u0451 \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0410\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u041f\u041e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u0439 \u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439, \u0438 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0435 \u0431\u0430\u0437\u044b. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0432\u043e\u0437\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u0433\u0440 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u0440\u0443\u043a\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u2014 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u0433\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u0438\u043b\u0438 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/csharp\/1118\/\">\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/a>. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0434\u0435\u043b\u0430\u043d \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430? \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 PVS-Studio<\/h3>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PVS-Studio, \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1146\">\u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/a>. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1146\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 PVS-Studio \u043d\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u043c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c, \u0430 \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u043e\u0434 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio-quickstart-cppwindows\/\">Windows<\/a>. \u041d\u0443\u0436\u043d\u043e \u0434\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 IDE: \u0434\u043b\u044f Qt Creator (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u0442 \u0435\u0451 \u0432 \u043f\u0430\u043f\u043a\u0443 PVS-Studio) \u0438 Visual Studio. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u2014 7.31.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: \u044f\u0434\u0440\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 Visual Studio, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0432 Qt Creator. \u0412 \u0432\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/wiki\/Compiling-the-whole-project\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435<\/a>, \u0438 \u0430\u0432\u0442\u043e\u0440 \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044f\u0434\u0440\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/tree\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\">f518e50<\/a> \u0432\u0435\u0442\u043a\u0438 <em>development<\/em>.<\/p>\n<h3>\u0410\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f <em>x64dbg.sln<\/em> \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0442\u043e\u043d\u0443\u0442\u044c \u0432 \u0448\u0443\u043c\u0435 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043e\u0434\u043e\u043c x64dbg \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \u042d\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0435 <em>Third Party<\/em> \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <em>x64dbg_dbg<\/em> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">\\dbghelp\\ \\DeviceNameResolver\\ \\jansson\\ \\LLVMDemangle\\ \\lz4\\ \\msdia\\ \\ntdll\\ \\TitanEngine\\ \\WinInet-Downloader\\ \\XEDParse\\<\/code><\/pre>\n<p>\u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Visual Studio: <strong>Extensions &gt; PVS-Studio &gt; Options &gt; Don&#8217;t Check Files<\/strong>. \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u044b <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/6640\/\">\u0432 \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>\u0413\u043e\u0442\u043e\u0432\u044c\u0442\u0435 \u0432\u0430\u0448\u0438 \u0438\u043d\u0441\u0435\u043a\u0442\u0438\u0446\u0438\u0434\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u044b\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0433\u0438 \u0438\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430! \u0411\u0435\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430, \u043a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b.<\/p>\n<h4>\u041d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0439!<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v570\/\">V570<\/a> The &#8216;mLastChar&#8217; variable is assigned to itself. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L149\">lexer.cpp 149<\/a><\/p>\n<pre><code class=\"cpp\">class Lexer { .... private:   ....   int mLastChar = ' ';   .... .... }  Lexer::Token Lexer::getToken() {   ....   \/\/character literal   if(mLastChar == '\\'')   {     std::string charLit;     while(true)     {       ....       if(mLastChar == '\\\\') \/\/escape sequence       {         nextChar();         if(mLastChar == EOF)           return reportError(\"unexpected end of file in character literal (2)\");         if(mLastChar == '\\r' || mLastChar == '\\n')           return reportError(\"unexpected newline in character literal (2)\");         if(   mLastChar == '\\'' || mLastChar == '\\\"'            || mLastChar == '?' || mLastChar == '\\\\')           mLastChar = mLastChar;                                   \/\/ &lt;=         else if(mLastChar == 'a')           mLastChar = '\\a';         ....       }       ....     }     ....   } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0448\u0430, \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0437\u043d\u0430\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>mLastChar<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 <em>Lexer<\/em> \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L379\"><em>nextChar<\/em><\/a> \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 <em>mLastChar<\/em>. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>mLastChar<\/em> \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u043e\u043c, \u0442\u043e \u0437\u0430\u0447\u0435\u043c \u0435\u0439 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435? \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v570\/\">V570<\/a> The &#8216;mLastChar&#8217; variable is assigned to itself. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L215\">lexer.cpp 215<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>\u0410 \u0432\u0434\u0440\u0443\u0433?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v547\/\">V547<\/a> Expression &#8216;!expr&#8217; is always true. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/parser.cpp#L118\">parser.cpp 118<\/a><\/p>\n<pre><code class=\"cpp\">uptr&lt;Expr&gt; Parser::ParseExpr() {   return nullptr; }  uptr&lt;Return&gt; Parser::ParseReturn() {   if(CurToken.Token == Lexer::tok_return)   {     NextToken();     auto expr = ParseExpr();     if(!expr)                              \/\/ &lt;=     {       ReportError(\"failed to parse Return (ParseExpr failed)\");       return nullptr;     }     return make_uptr&lt;Return&gt;(move(expr));   }   return nullptr; }<\/code><\/pre>\n<p>\u041a\u0430\u043a\u043e\u0432\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e? \u041f\u0440\u0430\u0432\u0434\u0438\u0432\u043e \u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0432\u0435\u043a\u043e\u0432\u043e\u0435 \u0441\u0443\u0435\u0432\u0435\u0440\u0438\u0435, \u0447\u0442\u043e \u043c\u044b\u0448\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0437 \u0433\u0440\u044f\u0437\u043d\u043e\u0433\u043e \u0431\u0435\u043b\u044c\u044f? \u041d\u0430\u0443\u0447\u043d\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c\u043e. \u041a\u0430\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 <em>nullptr<\/em>.<\/p>\n<p>\u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 <em>uptr<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/memory\/unique_ptr\">std::unique_ptr<\/a>:<\/p>\n<pre><code class=\"cpp\">template&lt;class T&gt; using uptr = unique_ptr&lt;T&gt;;<\/code><\/pre>\n<h4>\u0410 \u0432\u0434\u0440\u0443\u0433 \u043d\u0435\u0442?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always false: !haveCurrValue. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/watch.cpp#L61\">watch.cpp 61<\/a><\/p>\n<pre><code class=\"cpp\">.... currValue = val; haveCurrValue = true; if(getType() != WATCHVARTYPE::TYPE_INVALID) {   switch(getWatchdogMode())   {   ....   case WATCHDOGMODE::MODE_CHANGED:     if(currValue != origVal || !haveCurrValue)         \/\/ &lt;=     {       duint cip = GetContextDataEx(hActiveThread, UE_CIP);       dprintf(....);       watchdogTriggered = 1;     }     break;   case WATCHDOGMODE::MODE_UNCHANGED:     if(currValue == origVal || !haveCurrValue)         \/\/ &lt;=     {       duint cip = GetContextDataEx(hActiveThread, UE_CIP);       dprintf(....);       watchdogTriggered = 1;     }     break;   } } return val; ....<\/code><\/pre>\n<p>\u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0443 \u043d\u0430\u0441 \u0441\u043b\u0443\u0447\u0430\u0439 copy-paste-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>haveCurrValue<\/em> \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0430 switch-case.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always false: !haveCurrValue. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/watch.cpp#L69\">watch.cpp 69<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0430\u043c\u0431\u0438\u0446\u0438\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043b\u044f\u043c\u0431\u0434\u044b<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v783\/\">V783<\/a> Dereferencing of the invalid iterator might take place. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/analysis\/LinearPass.cpp#L130\">LinearPass.cpp 130<\/a><\/p>\n<pre><code class=\"cpp\">void LinearPass::AnalyseOverlaps() {   ....   \/\/ Erase blocks marked for deletion   m_MainBlocks.erase(std::remove_if(     m_MainBlocks.begin(), m_MainBlocks.end(), [](BasicBlock &amp; Elem)     {       return Elem.GetFlag(BASIC_BLOCK_FLAG_DELETE);     }));   .... }<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Erase%E2%80%93remove_idiom\">erase-remove<\/a> \u0438\u0434\u0438\u043e\u043c\u0443. \u0421\u0443\u0442\u044c \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c: \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <em>std::remove<\/em>, \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0435\u0446, \u0430 \u0441\u0430\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>std::erase<\/em> \u043d\u0430\u0447\u043d\u0451\u0442 \u0438\u0445 \u0441\u0442\u0438\u0440\u0430\u0442\u044c. \u041f\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u0430\u0432\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043b\u0430\u0433 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u043e \u0447\u0451\u043c \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0430\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <em>m_MainBlocks.erase<\/em>.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>std::remove<\/em> \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 <em>end()<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>std::erase<\/em>! \u0421\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 <em>end()<\/em> \u0445\u043e\u0442\u044c \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c, \u043d\u043e \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 <em>std::erase<\/em> \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <em>end()<\/em> \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u0435\u0449\u0451 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435! \u0410 \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e \u0432\u044b\u0448\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b x64dbg \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 C++20, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>std::erase_if<\/em>, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043e\u043a\u0430\u0437\u0438\u0438. \u041d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 Visual C++ 2013 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f C++11 \u0431\u044b\u043b\u0430 \u0435\u0449\u0451 \u043d\u043e\u0432\u0438\u043d\u043a\u043e\u0439.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>std::erase<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0434\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u0438\u0440\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">m_MainBlocks.erase(std::remove_if(   m_MainBlocks.begin(), m_MainBlocks.end(), [](BasicBlock &amp; Elem)   {       return Elem.GetFlag(BASIC_BLOCK_FLAG_DELETE);   }), m_MainBlocks.end());<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438\u0441\u044c \u043e\u0442 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0447\u0451\u0442\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<h4>\u041c\u0438\u043d\u0443\u0442\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always true: addr &lt; _base + _size. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/commands\/cmd-undocumented.cpp#L382\">cmd-undocumented.cpp 382<\/a><\/p>\n<pre><code class=\"cpp\">bool cbInstrVisualize(int argc, char* argv[]) {   if(IsArgumentsLessThan(argc, 3))     return false;   duint start;   duint maxaddr;   ....   {     ....     \/\/initialize     Zydis zydis;     duint _base = start;     duint _size = maxaddr - start;     Memory&lt;unsigned char*&gt; _data(_size);     MemRead(_base, _data(), _size);     for(duint addr = start, fardest = 0; addr &lt; maxaddr;)     {       ....       \/\/continue algorithm       const unsigned char* curData =         (addr &gt;= _base &amp;&amp; addr &lt; _base + _size)         \/\/ &lt;=           ? _data() + (addr - _base)           : nullptr;       if(zydis.Disassemble(addr, curData, MAX_DISASM_BUFFER))       {         if(addr + zydis.Size() &gt; maxaddr)           break; \/\/we went past the maximum allowed address         ....       }       ....     }     ....   }   .... }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>_base<\/em> \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>start<\/em>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0446\u0438\u043a\u043b\u0430 (<em>addr &lt; maxaddr<\/em>) \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>curData<\/em>. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0443\u043a\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430: <em>addr &lt; maxaddr<\/em><\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430: <em>addr &lt; _base + _size<\/em><\/p>\n<\/li>\n<li>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>_size<\/em>: <em>maxaddr \u2013 start<\/em><\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>_base<\/em> \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>start<\/em>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <em>maxaddr<\/em>, \u043d\u0443\u0436\u043d\u043e \u043a <em>start<\/em> \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c <em>_size<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0445\u0438\u0442\u0440\u0443\u044e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">maxaddr = start + _size<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 <em>addr &lt; maxaddr<\/em> \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e <em>addr &lt; _base + _size<\/em> \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 &#171;\u043f\u043e\u043b\u043d\u043e\u0439&#187; \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<h4>&#171;\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#187;<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1053\/\">V1053<\/a> Calling the &#8216;AddRef&#8217; virtual function in the constructor may lead to unexpected result at runtime. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/pdbdiafile.cpp#L23\">pdbdiafile.cpp 23<\/a><\/p>\n<pre><code class=\"cpp\">\/\/Taken from: https:\/\/msdn.microsoft.com\/en-us\/library\/ms752876(v=vs.85).aspx class FileStream : public IStream {   FileStream(HANDLE hFile)   {     AddRef();                         \/\/ &lt;=     _hFile = hFile;   }  .... public:   virtual ULONG STDMETHODCALLTYPE AddRef(void)   {     return (ULONG)InterlockedIncrement(&amp;_refcount);   } .... }<\/code><\/pre>\n<p>\u0412\u0438\u0436\u0443 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 &#171;\u0432\u0437\u044f\u0442\u043e \u0438\u0437&#187;. \u0421\u043c\u043e\u0442\u0440\u044e \u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043a\u043e\u0434\u0430 \u0438\u0437 Microsoft Learn. \u0412\u0438\u0436\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>AddRef<\/em> \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>_refcount<\/em>:<\/p>\n<pre><code class=\"cpp\">class FileStream : public IStream   {   FileStream(HANDLE hFile)      {     _refcount = 1;       _hFile = hFile;     } .... }<\/code><\/pre>\n<p>\u0427\u0435\u043c \u0447\u0440\u0435\u0432\u0430\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u0438\u043b\u0438 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445? \u0427\u0440\u0435\u0432\u0430\u0442\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0891\/\">\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435\u043c \u043b\u043e\u0433\u0438\u043a\u0438 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c \u0434\u0430, &#171;\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#187;, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/winnt\/nf-winnt-interlockedincrement\"><em>InterlockedIncrement<\/em><\/a> \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 <em>_refcount<\/em>? \u041e\u043d\u0430 \u0434\u0430\u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f!<\/p>\n<h4>\u0420\u0430\u0437\u0434\u0443\u0432\u0430\u0435\u043c \u043a\u043e\u0434. \u041f\u043e\u0441\u043e\u0431\u0438\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v547\/\">V547<\/a> Expression &#8216;!bRedirectSupported&#8217; is always true. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/launcher\/x64dbg_launcher.cpp#L76\">x64dbg_launcher.cpp 76<\/a><\/p>\n<pre><code class=\"cpp\">static BOOL isWowRedirectionSupported() {   BOOL bRedirectSupported = FALSE;    _Wow64DisableRedirection = (LPFN_Wow64DisableWow64FsRedirection)     GetProcAddress(GetModuleHandle(TEXT(\"kernel32\")),                    \"Wow64DisableWow64FsRedirection\");   _Wow64RevertRedirection = (LPFN_Wow64RevertWow64FsRedirection)     GetProcAddress(GetModuleHandle(TEXT(\"kernel32\")),                    \"Wow64RevertWow64FsRedirection\");    if(!_Wow64DisableRedirection || !_Wow64RevertRedirection)     return bRedirectSupported;   else     return !bRedirectSupported;     \/\/ &lt;= }<\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043e\u0449\u0443\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c. \u0414\u043e\u043b\u0433\u043e \u0432\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0441\u044f \u0432 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u0430\u0436\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0430 \u0433\u043b\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u0430\u043f\u043b\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0432\u0438\u0434\u0435\u043b <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1122\/#IDC99E53BA04\">\u0436\u0435\u0441\u0442\u043e\u043a\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e<\/a> \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u0442\u044c \u0436\u0435\u0440\u0442\u0432\u0443 \u0441\u0442\u043e\u043c\u0430\u0442\u043e\u043b\u043e\u0433\u0430 \u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0431\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0443\u0431\u0430. \u041d\u043e, \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0432 \u043f\u0443\u0433\u0430\u044e\u0449\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u043e\u0440\u043e\u0442\u044b, \u044d\u0442\u043e \u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0432\u043e\u0434 \u0434\u043b\u044f \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430! \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1115\/\">\u0441\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443<\/a> \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/libloaderapi\/nf-libloaderapi-getprocaddress\"><em>GetProcAddress<\/em><\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0435\u0451 \u0438\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f, \u043b\u0438\u0431\u043e <em>NULL<\/em>, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/winprog64\/file-system-redirector\">\u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b <em>WoW64<\/em>. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <em>FALSE<\/em>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432 \u0442\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">static BOOL isWowRedirectionSupported() {   _Wow64DisableRedirection = (LPFN_Wow64DisableWow64FsRedirection)     GetProcAddress(GetModuleHandle(TEXT(\"kernel32\")),                   \"Wow64DisableWow64FsRedirection\");   _Wow64RevertRedirection = (LPFN_Wow64RevertWow64FsRedirection)     GetProcAddress(GetModuleHandle(TEXT(\"kernel32\")),                   \"Wow64RevertWow64FsRedirection\");    return !_Wow64DisableRedirection || !_Wow64RevertRedirection; }<\/code><\/pre>\n<p>\u041d\u043e \u043f\u043e\u0442\u043e\u043c \u0433\u043b\u0430\u0437\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Microsoft Learn \u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/wow64apiset\/nf-wow64apiset-wow64revertwow64fsredirection\"><em>Wow64RevertWow64FsRedirection<\/em><\/a>:<\/p>\n<blockquote>\n<p>This function should not be called without a previous call to the <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/wow64apiset\/nf-wow64apiset-wow64disablewow64fsredirection\">Wow64DisableWow64FsRedirection<\/a> function.<\/p>\n<p>Any data allocation on behalf of the <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/wow64apiset\/nf-wow64apiset-wow64disablewow64fsredirection\">Wow64DisableWow64FsRedirection<\/a> function is cleaned up by this function.<\/p>\n<\/blockquote>\n<p>\u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0440\u043d\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u0430\u044f! \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">return _Wow64DisableRedirection &amp;&amp; _Wow64RevertRedirection;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<h4>\u041c\u0430\u043a\u0440\u043e\u0441 \u0441\u043e \u0441\u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1003\/\">V1003<\/a> The macro &#8216;TITANGETDRX&#8217; is a dangerous expression. The parameter &#8216;titantype&#8217; must be surrounded by parentheses. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/breakpoint.h#L8\">breakpoint.h 8<\/a><\/p>\n<pre><code class=\"cpp\">#define TITANGETDRX(titantype) UE_DR0 + ((titantype &gt;&gt; 8) &amp; 0xF)<\/code><\/pre>\n<p>\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e \u043a\u043e\u0434\u0443 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>titantype<\/em> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u0431\u043e\u0439 \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043e\u0441\u0442\u0443\u043f\u0438\u0442\u0441\u044f \u0438 \u0437\u0430\u0431\u0443\u0434\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0441\u0442 \u0432 \u043c\u0430\u043a\u0440\u043e\u0441 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u043e \u043a \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0443 \u043c\u043e\u0436\u0435\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u0438\u0439\u0442\u0438 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/drivers\/debugger\/windows-error-reporting\">\u0434\u043e\u043a\u0442\u043e\u0440 \u0412\u0430\u0442\u0441\u043e\u043d \u0438\u043b\u0438 WER<\/a>.<\/p>\n<p>\u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u0440\u0443 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a.<\/p>\n<pre><code class=\"cpp\">#define TITANGETDRX(titantype) UE_DR0 + (((titantype) &gt;&gt; 8) &amp; 0xF)<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1003\/\">V1003<\/a> The macro &#8216;TITANGETTYPE&#8217; is a dangerous expression. The parameter &#8216;titantype&#8217; must be surrounded by parentheses. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/breakpoint.h#L11\">breakpoint.h 11<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1003\/\">V1003<\/a> The macro &#8216;TITANGETSIZE&#8217; is a dangerous expression. The parameter &#8216;titantype&#8217; must be surrounded by parentheses. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/breakpoint.h#L13\">breakpoint.h 13<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043e\u043a\u0430\u0437\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u044f\u043c\u0431\u0434\u044b<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v595\/\">V595<\/a> The &#8216;Info.headers&#8217; pointer was utilized before it was verified against nullptr. Check lines: 66, 483, 491. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/module.cpp#L483\">module.cpp 483<\/a><\/p>\n<pre><code class=\"cpp\">#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER)        \\   ((ULONG_PTR)(ntheader) +                                            \\    FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) +                 \\    ((ntheader))-&gt;FileHeader.SizeOfOptionalHeader   \\   ))  ULONG64 ModRvaToOffset(ULONG64 base, PIMAGE_NT_HEADERS ntHeaders, ULONG64 rva) {   PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(ntHeaders);   .... }  static void ReadDebugDirectory(MODINFO &amp; Info, ULONG_PTR FileMapVA) {   ...   const auto supported = [&amp;Info, FileMapVA](PIMAGE_DEBUG_DIRECTORY entry)   {     \/\/ Check for valid RVA     ULONG_PTR offset = 0;     if(entry-&gt;AddressOfRawData)       offset = Info.isVirtual         ? entry-&gt;AddressOfRawData         : (ULONG_PTR)ModRvaToOffset(0,                                     Info.headers,                     \/\/ &lt;=                                     entry-&gt;AddressOfRawData);     ....        \/\/ Check size is sane and end of data lies within the image     if(entry-&gt;SizeOfData &lt; sizeof(CV_INFO_PDB20) \/*smallest supported type*\/       || entry-&gt;AddressOfRawData        + entry-&gt;SizeOfData &gt; HEADER_FIELD(Info.headers, SizeOfImage))        return false;       ....     return false;   };   .... }<\/code><\/pre>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 <em>Info.headers<\/em> \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u0430\u043a\u0440\u043e\u0441 <em>IMAGE_FIRST_SECTION<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/module.cpp#L64\"><em>ModRvaToOffset<\/em><\/a>, \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0441 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u0421\u0442\u0430\u0440\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u2014 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/0066\/\">Undefined Behavior<\/a> \u2014 \u0441\u043d\u043e\u0432\u0430 \u0441 \u043d\u0430\u043c\u0438. \u041c\u0430\u043a\u0440\u043e\u0441 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 PE-\u043e\u0431\u0440\u0430\u0437\u0430 \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 NT. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445!<\/p>\n<h4>\u041c\u0435\u043d\u044c\u0448\u0435 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 datasheet&#8217;\u044b<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always true: * memorySize &lt;= 512. The value range of unsigned char type: [0, 255]. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/TraceRecord.cpp#L239\">TraceRecord.cpp 239<\/a><\/p>\n<pre><code class=\"cpp\">\/\/See https:\/\/www.felixcloutier.com\/x86\/FXSAVE.html, max 512 bytes #define memoryContentSize 512  static void HandleZydisOperand(                  const Zydis &amp; zydis, int opindex,                  DISASM_ARGTYPE* argType, duint* value,                  unsigned char memoryContent[memoryContentSize],                  unsigned char* memorySize) {   ....   case ZYDIS_OPERAND_TYPE_MEMORY:   {     *argType = arg_memory;     const auto &amp; mem = op.mem;     if(mem.segment == ArchValue(ZYDIS_REGISTER_FS, ZYDIS_REGISTER_GS))     {       *value += ThreadGetLocalBase(ThreadGetId(hActiveThread));     }     *memorySize = op.size \/ 8;     if(*memorySize &lt;= memoryContentSize &amp;&amp; DbgMemIsValidReadPtr(*value))  \/\/ &lt;=     {       MemRead(*value, memoryContent, max(op.size \/ 8, sizeof(duint)));     }   }   break;   .... }<\/code><\/pre>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043a\u043e\u0434, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u2014 \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <em>FXSAVE<\/em> \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b x86. \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 MMX, XMM \u0438 MXCSR \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 512 \u0431\u0430\u0439\u0442. \u041a\u043e\u043b\u043b\u0435\u0433\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0434 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0432 \u0435\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0439, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u0433\u0440\u043e\u043c\u043a\u0438\u0439 \u0441\u043f\u043e\u0440 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e \u0433\u0434\u0435-\u0442\u043e \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b \u044d\u0442\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443&#8230;<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f71\/e9a\/df1\/f71e9adf1505e128f3886c9432c03ad6.png\" width=\"1600\" height=\"1067\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f71\/e9a\/df1\/f71e9adf1505e128f3886c9432c03ad6.png\"\/><\/figure>\n<p>\u0421 \u0445\u0438\u0442\u0440\u043e\u0439 \u0443\u0445\u043c\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043b\u0438\u0446\u0435 \u044f \u043f\u043e\u0434\u0445\u043e\u0436\u0443 \u043a \u043a\u043d\u0438\u0436\u043d\u043e\u0439 \u043f\u043e\u043b\u043a\u0435 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u044e \u0438\u0437 \u043d\u0435\u0451 \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u043e\u043c &#171;\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b IA-32&#187;, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e Intel \u0430\u0436 \u0432 2002 \u0433\u043e\u0434\u0443! \u041a\u043d\u0438\u0433\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u0441\u0432\u0435\u0436\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0438 \u0433\u043e\u0440\u044f\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Pentium 4. \u0422\u044f\u0436\u0451\u043b\u0430\u044f \u0438 \u0442\u043e\u043b\u0441\u0442\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u0441 \u0433\u0440\u043e\u043c\u043a\u0438\u043c \u0445\u043b\u043e\u043f\u043a\u043e\u043c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u043e\u0439 \u0441\u0442\u043e\u043b, \u0438 \u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0435\u0451 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0433\u0434\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443. \u041f\u0435\u0440\u0435\u0434 \u043c\u043e\u0438\u043c \u043e\u043f\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0451\u0442 \u0432\u043e \u0432\u0441\u0451\u043c \u0441\u0432\u043e\u0451\u043c \u0432\u0435\u043b\u0438\u0447\u0438\u0438 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0447\u0442\u043e \u0438 \u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435. \u041d\u0430 \u044d\u0442\u043e\u043c \u0441\u043f\u043e\u0440 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u042f \u0436\u0435 \u043b\u0438\u0448\u044c \u043c\u043e\u0433\u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0430. <em>unsigned char<\/em> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 255 \u2014 \u043e\u043d \u0440\u043e\u0441\u0442\u043e\u043c \u043d\u0435\u0432\u0435\u043b\u0438\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f \u0434\u043e \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <em>FXSAVE<\/em>.<\/p>\n<pre><code class=\"cpp\">.... *memorySize = op.size \/ 8; if(DbgMemIsValidReadPtr(*value)) {   MemRead(*value, memoryContent, max(op.size \/ 8, sizeof(duint))); } ....<\/code><\/pre>\n<h4>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1048\/\">V1048<\/a> The &#8216;titsize&#8217; variable was assigned the same value. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/commands\/cmd-breakpoint-control.cpp#L427\">cmd-breakpoint-control.cpp 427<\/a><\/p>\n<pre><code class=\"cpp\">bool cbDebugSetHardwareBreakpoint(int argc, char* argv[]) {   ....   DWORD titsize = UE_HARDWARE_SIZE_1;   if(argc &gt; 3)   {     duint size;     if(!valfromstring(argv[3], &amp;size))       return false;     switch(size)     {     case 1:       titsize = UE_HARDWARE_SIZE_1;         \/\/ &lt;=       break;     case 2:       titsize = UE_HARDWARE_SIZE_2;       break;     case 4:       titsize = UE_HARDWARE_SIZE_4;       break; #ifdef _WIN64     case 8:       titsize = UE_HARDWARE_SIZE_8;       break; #endif \/\/ _WIN64     default:       titsize = UE_HARDWARE_SIZE_1;        \/\/ &lt;=       dputs(QT_TRANSLATE_NOOP(\"DBG\", \"Invalid size, using 1\"));       break;     }     ....   }   .... }<\/code><\/pre>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043c \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u043e \u0437\u0430\u0447\u0435\u043c&#8230; \u0414\u043b\u044f \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0438?<\/p>\n<h4>\u0412\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0430?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1037\/\">V1037<\/a> Two or more case-branches perform the same actions. Check lines: 42, 45 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/commandparser.cpp#L42\">commandparser.cpp 42<\/a><\/p>\n<pre><code class=\"cpp\">Command::Command(const String &amp; command) {   ParseState state = Default;   int len = (int)command.length();   for(int i = 0; i &lt; len; i++)   {     char ch = command[i];     switch(state)     {     ....     case Escaped:       switch(ch)       {       case '\\t':       case ' ':         dataAppend(' ');         break;       case ',':         dataAppend(ch);         \/\/ &lt;=         break;       case '\\\"':         dataAppend(ch);         \/\/ &lt;=         break;       default:         dataAppend('\\\\');         dataAppend(ch);         break;       }       state = Default;       break;     ....     }   } }<\/code><\/pre>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e x64dbg \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;\u043a\u0430\u0431\u044b \u0447\u0442\u043e \u043d\u0435 \u0432\u044b\u0448\u043b\u043e&#187;, \u043b\u0438\u0431\u043e &#171;\u0438 \u0442\u0430\u043a \u0441\u043e\u0439\u0434\u0451\u0442&#187;. \u0415\u0441\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0431\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u043e\u0442 \u0432\u0442\u043e\u0440\u043e\u0439, \u0442\u043e \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043d\u0435\u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043a\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e <em>fallthrough<\/em> \u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0447\u0430\u0441\u0442\u0438. \u0414\u043b\u044f \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d <em>fallthrough<\/em>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0430\u0432\u0442\u043e\u0440 \u044f\u0432\u043d\u043e \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043e\u0431\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043e\u043f\u0438\u0448\u0443\u0442 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0431\u0435\u043b. \u0427\u0442\u043e \u0436\u0435 \u043d\u0435 \u0442\u0430\u043a \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0438\u043b\u0438 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u043e\u0439, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <em>fallthrough<\/em> \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043f\u0430\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432? \u0421\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>ch<\/em>, \u0430 \u043d\u0435 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u0415\u0441\u043b\u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c <em>fallthrough<\/em>, \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u0430 \u0438 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438, \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u044b \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cpp\">switch(ch) { case '\\t': case ' ':   dataAppend(' ');   break; case ',': case '\\\"':   dataAppend(ch);       \/\/ &lt;=   break; default:   dataAppend('\\\\');   dataAppend(ch);   break; }<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043d\u0430 <s>\u0441\u043f\u0438\u0447\u043a\u0430\u0445<\/s> \u0431\u0430\u0439\u0442\u0430\u0445, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430\u0445 \u0447\u0438\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0435\u0433\u043e \u043c\u043e\u0437\u0433\u0430 \u0434\u043b\u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e.<\/p>\n<h4>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, (\u043d\u0435) \u043c\u043e\u0434\u0435\u0440\u043d!<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1109\/\">V1109<\/a> The &#8216;InitCommonControls&#8217; function is deprecated. Consider switching to an equivalent newer function. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/launcher\/x64dbg_launcher.cpp#L426\">x64dbg_launcher.cpp 426<\/a><\/p>\n<pre><code class=\"cpp\">int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,                      LPSTR lpCmdLine, int nShowCmd) {   InitCommonControls();   .... }<\/code><\/pre>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d\u0430 \u0437\u0430\u0441\u043e\u0440\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/sbscs\/application-manifests\">\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a>, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0432\u0435\u043b\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 Windows XP! \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/controls\/cookbook-overview\">\u0442\u0435\u043c \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f Windows<\/a> \u0432 \u043e\u043a\u043d\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0430 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c Windows Vista \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c <a href=\"https:\/\/learn.microsoft.com\/en-us\/cpp\/security\/how-user-account-control-uac-affects-your-application?view=msvc-170\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/a> \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u043e\u0447\u043a\u0443, \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Visual Studio 2013, \u0433\u0434\u0435 \u0438\u0445 \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c! \u042d\u0442\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0435\u0439 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u0442\u044c \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 Visual Studio 2005. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0443\u0442\u044c \u043f\u044b\u043b\u044c \u0441 \u044d\u0442\u043e\u0439 IDE, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u043f\u043e\u0434\u0432\u0435\u043b\u0430 \u043b\u0438 \u043c\u0435\u043d\u044f \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/943\/4c7\/076\/9434c7076f41ce9f01fe9dcf3265eee2.png\" width=\"1600\" height=\"711\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/943\/4c7\/076\/9434c7076f41ce9f01fe9dcf3265eee2.png\"\/><\/figure>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Windows \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a \u043d\u0435\u043c\u0443 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f. \u0411\u0435\u0437 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430, \u043a \u0441\u043b\u043e\u0432\u0443, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/sysinfoapi\/nf-sysinfoapi-getversionexw\">\u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/a>.<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1109\/\">V1109<\/a> The &#8216;PathRemoveFileSpecW&#8217; function is deprecated. Consider switching to an equivalent newer function. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/launcher\/x64dbg_launcher.cpp#L114\">x64dbg_launcher.cpp 114<\/a><\/p>\n<pre><code class=\"cpp\">static HRESULT AddDesktopShortcut(TCHAR* szPathOfFile,                                   const TCHAR* szNameOfLink) {   HRESULT hRes = NULL;    \/\/Get the working directory   TCHAR pathFile[MAX_PATH + 1];   _tcscpy_s(pathFile, szPathOfFile);   PathRemoveFileSpec(pathFile);   .... }<\/code><\/pre>\n<p>\u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/shlwapi\/nf-shlwapi-pathremovefilespecw\"><em>PathRemoveFileSpecW<\/em><\/a> \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u043a\u0440\u043e\u0441. \u042d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043c\u044b\u043a\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0448\u0430 \u0438\u0437 \u043f\u0443\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0451 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/pathcch\/nf-pathcch-pathcchremovefilespec\"><em>PathCchRemoveFileSpec<\/em><\/a>, \u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 Windows 8. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Windows XP, \u0442\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/0030\/#ID4633590AF4\">\u043f\u043e\u0434\u0430\u0432\u0438\u0442\u044c<\/a>, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"cpp\">PathRemoveFileSpec(pathFile); \/\/-V1109 \/\/-VH\"2078475722\"<\/code><\/pre>\n<p>\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u2014 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u0445\u044d\u0448\u0435\u043c. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u0435\u0442\u043a\u0438 False Alarm \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043a\u043e\u0434. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0437\u0430\u043c\u0435\u043d\u044b \u043e\u0434\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u0443\u0447\u043d\u043e\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0434\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (<em>PathRemoveFileSpecW<\/em> \u0434\u043b\u044f Unicode, <em>PathRemoveFileSpecA<\/em> \u0434\u043b\u044f ANSI) \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0440\u0443\u0448\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0445\u044d\u0448\u0430 \u0441\u0442\u0440\u043e\u043a\u0435, \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1109\/\">V1109<\/a> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1109\/\">V1109<\/a> The &#8216;PathRemoveFileSpecW&#8217; function is deprecated. Consider switching to an equivalent newer function. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/launcher\/x64dbg_launcher.cpp#L479\">x64dbg_launcher.cpp 479<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1109\/\">V1109<\/a> The &#8216;PathRemoveFileSpecW&#8217; function is deprecated. Consider switching to an equivalent newer function. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/launcher\/x64dbg_launcher.cpp#503\">x64dbg_launcher.cpp 503<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>\u0418\u0442\u043e\u0433\u0438<\/h3>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u0447\u0438\u043d\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u044f\u043b\u044c\u043d\u0438\u043a. \u041a \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0443, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a? \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u043d\u0451\u043c \u0431\u0430\u0433\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1146\">PVS-Studio<\/a>? x64dbg \u0442\u043e\u0436\u0435 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u0430\u043c\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/963\/cbd\/c08\/963cbdc0808045f2c1467bde0aaf0f8a.png\" width=\"760\" height=\"350\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/963\/cbd\/c08\/963cbdc0808045f2c1467bde0aaf0f8a.png\"\/><\/figure>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f: \u0435\u0449\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#171;\u0448\u0430\u0433 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c&#187; \u0432 GUI. \u041a\u0430\u043a\u0438\u0435 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0430 \u043e\u0431\u0432\u044f\u0437\u043a\u0430 \u0438\u0437 Qt? \u041e\u0431 \u044d\u0442\u043e\u043c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041e\u0441\u0442\u0430\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438, \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430!<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Taras Shevchenko. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/cpp\/1146\/\">Debugging bugs in x64dbg debugger. No debugger<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/831698\/\"> https:\/\/habr.com\/ru\/articles\/831698\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0438 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0431\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 IDE \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 IDE \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u0442\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 x64dbg.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p><a href=\"https:\/\/x64dbg.com\">x64dbg<\/a> \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0434\u043b\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0438 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Windows \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0439 &#171;\u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439, \u043f\u0443\u0441\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439&#187; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0412\u043d\u0435\u0448\u043d\u0435 \u043e\u043d \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <a href=\"https:\/\/www.ollydbg.de\">OllyDbg<\/a>, \u043d\u043e \u0441 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044b\u043c \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u043d\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e <a href=\"https:\/\/sourceforge.net\/projects\/x64dbg\/files\/snapshots\/\">\u0440\u0430\u0437 \u0432 \u043c\u0435\u0441\u044f\u0446<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0438-\u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438\u0434\u0451\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/tree\/cross-platform\">\u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438<\/a>.<\/p>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio 2022 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Windows Vista, \u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u043d\u0430 Windows Vista \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/debugger\/remote-debugging?view=vs-2022#supported-operating-systems\">\u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c Windows 7.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432\u0441\u0451 \u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0410\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u041f\u041e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u0439 \u0431\u0430\u0437\u0435 \u0437\u043d\u0430\u043d\u0438\u0439, \u0438 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u044b\u0435 \u0431\u0430\u0437\u044b. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0432\u043e\u0437\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u0433\u0440 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u0440\u0443\u043a\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u2014 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u0433\u0440\u044b \u0432\u044b\u0445\u043e\u0434\u0438\u043b\u0438 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/csharp\/1118\/\">\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/a>. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0434\u0435\u043b\u0430\u043d \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430? \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 PVS-Studio<\/h3>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PVS-Studio, \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1146\">\u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/a>. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1146\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 PVS-Studio \u043d\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u043c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c, \u0430 \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u043e\u0434 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio-quickstart-cppwindows\/\">Windows<\/a>. \u041d\u0443\u0436\u043d\u043e \u0434\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 IDE: \u0434\u043b\u044f Qt Creator (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u0442 \u0435\u0451 \u0432 \u043f\u0430\u043f\u043a\u0443 PVS-Studio) \u0438 Visual Studio. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u2014 7.31.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: \u044f\u0434\u0440\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 Visual Studio, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0432 Qt Creator. \u0412 \u0432\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/wiki\/Compiling-the-whole-project\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435<\/a>, \u0438 \u0430\u0432\u0442\u043e\u0440 \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044f\u0434\u0440\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/tree\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\">f518e50<\/a> \u0432\u0435\u0442\u043a\u0438 <em>development<\/em>.<\/p>\n<h3>\u0410\u043d\u0430\u043b\u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f <em>x64dbg.sln<\/em> \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0442\u043e\u043d\u0443\u0442\u044c \u0432 \u0448\u0443\u043c\u0435 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043e\u0434\u043e\u043c x64dbg \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \u042d\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0435 <em>Third Party<\/em> \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <em>x64dbg_dbg<\/em> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">\\dbghelp\\ \\DeviceNameResolver\\ \\jansson\\ \\LLVMDemangle\\ \\lz4\\ \\msdia\\ \\ntdll\\ \\TitanEngine\\ \\WinInet-Downloader\\ \\XEDParse\\<\/code><\/pre>\n<p>\u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Visual Studio: <strong>Extensions &gt; PVS-Studio &gt; Options &gt; Don&#8217;t Check Files<\/strong>. \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u044b <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/6640\/\">\u0432 \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>\u0413\u043e\u0442\u043e\u0432\u044c\u0442\u0435 \u0432\u0430\u0448\u0438 \u0438\u043d\u0441\u0435\u043a\u0442\u0438\u0446\u0438\u0434\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u044b\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0433\u0438 \u0438\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430! \u0411\u0435\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430, \u043a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b.<\/p>\n<h4>\u041d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0439!<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v570\/\">V570<\/a> The &#8216;mLastChar&#8217; variable is assigned to itself. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L149\">lexer.cpp 149<\/a><\/p>\n<pre><code class=\"cpp\">class Lexer { .... private:   ....   int mLastChar = ' ';   .... .... }  Lexer::Token Lexer::getToken() {   ....   \/\/character literal   if(mLastChar == '\\'')   {     std::string charLit;     while(true)     {       ....       if(mLastChar == '\\\\') \/\/escape sequence       {         nextChar();         if(mLastChar == EOF)           return reportError(\"unexpected end of file in character literal (2)\");         if(mLastChar == '\\r' || mLastChar == '\\n')           return reportError(\"unexpected newline in character literal (2)\");         if(   mLastChar == '\\'' || mLastChar == '\\\"'            || mLastChar == '?' || mLastChar == '\\\\')           mLastChar = mLastChar;                                   \/\/ &lt;=         else if(mLastChar == 'a')           mLastChar = '\\a';         ....       }       ....     }     ....   } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0448\u0430, \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0437\u043d\u0430\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>mLastChar<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 <em>Lexer<\/em> \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L379\"><em>nextChar<\/em><\/a> \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 <em>mLastChar<\/em>. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>mLastChar<\/em> \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u043e\u043c, \u0442\u043e \u0437\u0430\u0447\u0435\u043c \u0435\u0439 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435? \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v570\/\">V570<\/a> The &#8216;mLastChar&#8217; variable is assigned to itself. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/lexer.cpp#L215\">lexer.cpp 215<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>\u0410 \u0432\u0434\u0440\u0443\u0433?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v547\/\">V547<\/a> Expression &#8216;!expr&#8217; is always true. <a href=\"https:\/\/github.com\/x64dbg\/btparser\/blob\/200221b4151b614017c9564709452e795b3c6c82\/btparser\/parser.cpp#L118\">parser.cpp 118<\/a><\/p>\n<pre><code class=\"cpp\">uptr&lt;Expr&gt; Parser::ParseExpr() {   return nullptr; }  uptr&lt;Return&gt; Parser::ParseReturn() {   if(CurToken.Token == Lexer::tok_return)   {     NextToken();     auto expr = ParseExpr();     if(!expr)                              \/\/ &lt;=     {       ReportError(\"failed to parse Return (ParseExpr failed)\");       return nullptr;     }     return make_uptr&lt;Return&gt;(move(expr));   }   return nullptr; }<\/code><\/pre>\n<p>\u041a\u0430\u043a\u043e\u0432\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e? \u041f\u0440\u0430\u0432\u0434\u0438\u0432\u043e \u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0432\u0435\u043a\u043e\u0432\u043e\u0435 \u0441\u0443\u0435\u0432\u0435\u0440\u0438\u0435, \u0447\u0442\u043e \u043c\u044b\u0448\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0437 \u0433\u0440\u044f\u0437\u043d\u043e\u0433\u043e \u0431\u0435\u043b\u044c\u044f? \u041d\u0430\u0443\u0447\u043d\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c\u043e. \u041a\u0430\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 <em>nullptr<\/em>.<\/p>\n<p>\u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 <em>uptr<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/memory\/unique_ptr\">std::unique_ptr<\/a>:<\/p>\n<pre><code class=\"cpp\">template&lt;class T&gt; using uptr = unique_ptr&lt;T&gt;;<\/code><\/pre>\n<h4>\u0410 \u0432\u0434\u0440\u0443\u0433 \u043d\u0435\u0442?<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always false: !haveCurrValue. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/watch.cpp#L61\">watch.cpp 61<\/a><\/p>\n<pre><code class=\"cpp\">.... currValue = val; haveCurrValue = true; if(getType() != WATCHVARTYPE::TYPE_INVALID) {   switch(getWatchdogMode())   {   ....   case WATCHDOGMODE::MODE_CHANGED:     if(currValue != origVal || !haveCurrValue)         \/\/ &lt;=     {       duint cip = GetContextDataEx(hActiveThread, UE_CIP);       dprintf(....);       watchdogTriggered = 1;     }     break;   case WATCHDOGMODE::MODE_UNCHANGED:     if(currValue == origVal || !haveCurrValue)         \/\/ &lt;=     {       duint cip = GetContextDataEx(hActiveThread, UE_CIP);       dprintf(....);       watchdogTriggered = 1;     }     break;   } } return val; ....<\/code><\/pre>\n<p>\u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0443 \u043d\u0430\u0441 \u0441\u043b\u0443\u0447\u0430\u0439 copy-paste-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>haveCurrValue<\/em> \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0430 switch-case.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always false: !haveCurrValue. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/watch.cpp#L69\">watch.cpp 69<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0430\u043c\u0431\u0438\u0446\u0438\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043b\u044f\u043c\u0431\u0434\u044b<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v783\/\">V783<\/a> Dereferencing of the invalid iterator might take place. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/analysis\/LinearPass.cpp#L130\">LinearPass.cpp 130<\/a><\/p>\n<pre><code class=\"cpp\">void LinearPass::AnalyseOverlaps() {   ....   \/\/ Erase blocks marked for deletion   m_MainBlocks.erase(std::remove_if(     m_MainBlocks.begin(), m_MainBlocks.end(), [](BasicBlock &amp; Elem)     {       return Elem.GetFlag(BASIC_BLOCK_FLAG_DELETE);     }));   .... }<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Erase%E2%80%93remove_idiom\">erase-remove<\/a> \u0438\u0434\u0438\u043e\u043c\u0443. \u0421\u0443\u0442\u044c \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c: \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <em>std::remove<\/em>, \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0435\u0446, \u0430 \u0441\u0430\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>std::erase<\/em> \u043d\u0430\u0447\u043d\u0451\u0442 \u0438\u0445 \u0441\u0442\u0438\u0440\u0430\u0442\u044c. \u041f\u043e \u0437\u0430\u043c\u044b\u0441\u043b\u0443 \u0430\u0432\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043b\u0430\u0433 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u043e \u0447\u0451\u043c \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0430\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <em>m_MainBlocks.erase<\/em>.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>std::remove<\/em> \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 <em>end()<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>std::erase<\/em>! \u0421\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 <em>end()<\/em> \u0445\u043e\u0442\u044c \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c, \u043d\u043e \u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 <em>std::erase<\/em> \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <em>end()<\/em> \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u0435\u0449\u0451 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435! \u0410 \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e \u0432\u044b\u0448\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b x64dbg \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 C++20, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>std::erase_if<\/em>, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043e\u043a\u0430\u0437\u0438\u0438. \u041d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 Visual C++ 2013 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f C++11 \u0431\u044b\u043b\u0430 \u0435\u0449\u0451 \u043d\u043e\u0432\u0438\u043d\u043a\u043e\u0439.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>std::erase<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0434\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u0438\u0440\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">m_MainBlocks.erase(std::remove_if(   m_MainBlocks.begin(), m_MainBlocks.end(), [](BasicBlock &amp; Elem)   {       return Elem.GetFlag(BASIC_BLOCK_FLAG_DELETE);   }), m_MainBlocks.end());<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438\u0441\u044c \u043e\u0442 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0447\u0451\u0442\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<h4>\u041c\u0438\u043d\u0443\u0442\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438<\/h4>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v560\/\">V560<\/a> A part of conditional expression is always true: addr &lt; _base + _size. <a href=\"https:\/\/github.com\/x64dbg\/x64dbg\/blob\/f518e507c24a04d9c82161ef1e89a7a70a73c0f2\/src\/dbg\/commands\/cmd-undocumented.cpp#L382\">cmd-undocumented.cpp 382<\/a><\/p>\n<pre><code class=\"cpp\">bool cbInstrVisualize(int argc, char* argv[]) {   if(IsArgumentsLessThan(argc, 3))     return false;   duint start;   duint maxaddr;   ....   {     ....     \/\/initialize     Zydis zydis;     duint _base = start;     duint _size = maxaddr - start;     Memory&lt;unsigned char*&gt; _data(_size);     MemRead(_base, _data(), _size);     for(duint addr = start, fardest = 0; addr &lt; maxaddr;)     {       ....       \/\/continue algorithm       const unsigned char* curData =         (addr &gt;= _base &amp;&amp; addr &lt; _base + _size)         \/\/ &lt;=           ? _data() + (addr - _base)           : nullptr;       if(zydis.Disassemble(addr, curData, MAX_DISASM_BUFFER))       {         if(addr + zydis.Size() &gt; maxaddr)           break; \/\/we went past the maximum allowed address         ....       }       ....     }     ....   }   .... }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>_base<\/em> \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>start<\/em>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0446\u0438\u043a\u043b\u0430 (<em>addr &lt; maxaddr<\/em>) \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>curData<\/em>. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0443\u043a\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430: <em>addr &lt; maxaddr<\/em><\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430: <em>addr &lt; _base +<\/em><\/p>\n<\/li>\n<\/ul>\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-427490","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/427490","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=427490"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/427490\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=427490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=427490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=427490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}