{"id":332975,"date":"2022-05-11T09:00:31","date_gmt":"2022-05-11T09:00:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=332975"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=332975","title":{"rendered":"<span>\u0424\u0430\u0437\u0437\u0438\u043d\u0433 Linux \u0447\u0435\u0440\u0435\u0437 WTF<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rv\/3x\/xy\/rv3xxyzfohayekhekmnh3b4cvf8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rv\/3x\/xy\/rv3xxyzfohayekhekmnh3b4cvf8.png\"\/><\/div>\n<p>  <\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0444\u0430\u0437\u0437\u0435\u0440 <a href=\"https:\/\/github.com\/0vercl0k\/wtf\">What The Fuzz<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 (\u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f) \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>blackbox \u0444\u0430\u0437\u0437\u0435\u0440;<\/li>\n<li>snapshot-based \u0444\u0430\u0437\u0437\u0435\u0440.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u044c \u0431\u0435\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u0440 \u0444\u0430\u0437\u0437\u0435\u0440\u0430 <a href=\"https:\/\/doar-e.github.io\/blog\/2021\/07\/15\/building-a-new-snapshot-fuzzer-fuzzing-ida\/\">\u043d\u0430\u0442\u0440\u0430\u0432\u0438\u043b<\/a> WTF \u043d\u0430 Ida Pro \u0438 \u043d\u0430\u0448\u0435\u043b \u0442\u0430\u043c \u043a\u0443\u0447\u0443 \u0431\u0430\u0433\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0443 \u0441 snapshot&#8217;\u0430\u043c\u0438, WTF \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 WTF, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0431\u0438\u043d\u0430\u0440\u044f\u043c\u0438 \u043f\u043e\u0434 x86;<\/li>\n<li>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u043d\u0433 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 Linux, \u0438 \u043d\u0430 Windows;<\/li>\n<li>\u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u043c \u0431\u0438\u043d\u0430\u0440\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u043d\u0430\u0440\u044c \u043f\u043e\u0434 Windows.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u0435\u043b\u044c\u0437\u044f \u0444\u0430\u0437\u0437\u0438\u0442\u044c ELF?<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u043e\u0436\u043d\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c snapshot \u0434\u043b\u044f Linux. \u0412\u0441\u0435-\u0442\u0430\u043a\u0438 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u0438\u0448\u0435\u043d\u044c \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f Windows.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0437 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"soderzhanie\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p><a href=\"#AFL\">1. \u0427\u0435\u043c WTF \u043b\u0443\u0447\u0448\u0435 AFL<\/a><br \/>  <a href=\"#win\">2. \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 WTF \u0441 \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u043c \u0434\u043b\u044f Windows<\/a><br \/>  <a href=\"#gdb\">3. \u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0447\u0435\u0440\u0435\u0437 gdb<\/a><br \/>  <a href=\"#vm\">3.1. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/a><br \/>  <a href=\"#pm\">3.2. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/a><br \/>  <a href=\"#cpu\">3.3 \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/a><br \/>  <a href=\"#case\">4. \u041f\u0440\u0438\u043c\u0435\u0440<\/a><br \/>  <a href=\"#symbol-store\">4.1. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 symbol-store.json<\/a><br \/>  <a href=\"#mem\">4.2. \u0414\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 mem.dmp<\/a><br \/>  <a href=\"#regs\">4.3. \u0414\u0430\u043c\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 regs.json<\/a><br \/>  <a href=\"#cov\">4.4. \u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 stackoverflow.cov<\/a><br \/>  <a href=\"#fuzzer\">4.5. \u0424\u0430\u0437\u0437\u0435\u0440<\/a><br \/>  <a href=\"#end\">5. \u0412\u044b\u0432\u043e\u0434<\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432 blackbox \u0443\u043c\u0435\u0435\u0442 \u0438 AFL. \u0422\u043e\u0433\u0434\u0430 \u0437\u0430\u0447\u0435\u043c \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435? <\/p>\n<p>  <\/p>\n<h2 id=\"anchoraflanchorchem-wtf-luchshe-afl\"><a name=\"AFL\"><\/a>\u0427\u0435\u043c WTF \u043b\u0443\u0447\u0448\u0435 AFL<\/h2>\n<p>  <\/p>\n<p>\u0423 WTF \u0435\u0441\u0442\u044c \u0432\u044b\u0433\u043e\u0434\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u2014 \u044d\u0442\u043e snapshot-based \u0444\u0430\u0437\u0437\u0435\u0440, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043d\u0438\u043c\u043a\u0430 \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u043d\u0430\u0440\u0435\u043c \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0434\u0432\u0430 \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438;<\/li>\n<li>\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u0442\u044c \u043e\u0442\u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e, \u0441 \u043b\u044e\u0431\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438;<\/li>\n<li>\u043c\u043e\u0436\u043d\u043e \u0444\u0430\u0437\u0437\u0438\u0442\u044c kernel-space: \u044f\u0434\u0440\u043e, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0410 \u043a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, WTF \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0438 \u043f\u0430\u043c\u044f\u0442\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>vuln(void* buf, int size)<\/code>, \u0438 \u0432 \u0441\u043d\u0438\u043c\u043a\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u041e\u0421 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    mov rsi, rdx     mov rdi, rax     call vuln     &lt;== rip<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0438 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0443\u0444\u0444\u0435\u0440\u0435 <code>buf<\/code> \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0430\u0437\u0437\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>rdi<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043c\u0443\u0441\u043e\u0440, \u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsi<\/code> \u2014 \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e WTF \u0441\u043d\u0438\u043c\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438\u0437 \u0441\u043d\u0438\u043c\u043a\u0430 \u0441 \u043f\u0430\u0443\u0437\u044b \u0438 \u0443\u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437 \u0443\u0436 \u043d\u0430\u0447\u0430\u043b\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u0433\u0434\u0430, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 WTF.<\/p>\n<p>  <\/p>\n<h2 id=\"anchorwinanchorkak-rabotaet-wtf-s-targetom-dlya-windows\"><a name=\"win\"><\/a>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 WTF \u0441 \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u043c \u0434\u043b\u044f Windows<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u044e\u0437\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u041e\u0421 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043d\u0435\u0439;<\/li>\n<li>\u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440 KD \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b;<\/li>\n<li>\u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f KD, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043d\u0438\u043c\u043e\u043a \u041e\u0421;<\/li>\n<li>\u043f\u0438\u0448\u0435\u0442 \u0444\u0430\u0437\u0437\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0430\u0437\u0437\u0438\u043d\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435);<\/li>\n<li>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0430\u0437\u0437\u0435\u0440.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042e\u0437\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 WTF \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0447\u0435\u0440\u0435\u0437 Hyper-V\/KVM\/Bochscpu \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043c\u043f\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0435 \u0432 \u0442\u0435\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u0441 \u0442\u0435\u043c\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u044e\u0437\u0435\u0440.<\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442, \u043a\u0441\u0442\u0430\u0442\u0438, \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e WTF \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0441 ELF: WTF \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 Linux, \u0438 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 KVM.<\/p>\n<p>  <\/p>\n<p>\u0410\u0432\u0442\u043e\u0440 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0441\u044f Windows, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u0447\u0435\u0440\u0435\u0437 KD.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043d\u0430 Linux \u0435\u0441\u0442\u044c gdb, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e?<\/p>\n<p>  <\/p>\n<h2 id=\"anchorgdbanchorkak-sdelat-snimok-cherez-gdb\"><a name=\"gdb\"><\/a>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0447\u0435\u0440\u0435\u0437 gdb<\/h2>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u044f\u0434\u0440\u043e, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439;<\/li>\n<li>\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 (\u0431\u0435\u0437 kaslr, aslr \u2014 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435) \u0441 \u044d\u0442\u0438\u043c \u044f\u0434\u0440\u043e\u043c \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u043c \u0431\u0438\u043d\u0430\u0440\u0435\u043c;<\/li>\n<li>qemu, \u0442\u043e\u0436\u0435 \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>gdb \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 qemu, \u0430 qemu \u2014 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u0422\u0430\u043a\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u2014 \u043e\u0434\u043d\u0430 (qemu) \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a, \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u044e\u0437\u0435\u0440, \u0438 \u0432\u0442\u043e\u0440\u0430\u044f (KVM) \u2014 \u0434\u043b\u044f \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430, \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 WTF.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 gdb \u043e \u044f\u0434\u0440\u0435 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. <\/p>\n<p>  <\/p>\n<p>\u041e\u0442 qemu \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 CPU \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442 \u044f\u0434\u0440\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/docs.huihoo.com\/doxygen\/linux\/kernel\/3.7\/structtask__struct.html\"><code>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 task_struct<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. <\/p>\n<p>  <\/p>\n<h3 id=\"anchorvmanchorvirtualnaya-pamyat\"><a name=\"vm\"><\/a>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 RAM, \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u043f\u043d\u0443\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043a\u043e\u0433\u0434\u0430 WTF \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443, \u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u2014 CPU \u0438 RAM, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u0434\u0438\u0441\u043a\u0430 \u043d\u0435\u0442. \u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u044f\u0434\u0440\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442 \u0435\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442, \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041f\u0440\u0438 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0435 \u044d\u0442\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0440\u043e\u0441\u0442\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e &#171;\u043f\u0440\u043e\u043a\u043b\u0438\u043a\u0430\u0442\u044c&#187; \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0441\u0435\u0445 \u043c\u044d\u043f\u043f\u043e\u0432, \u043f\u043e\u043a\u0430\u0437\u0430\u0432 \u044f\u0434\u0440\u0443, \u0447\u0442\u043e \u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 RAM.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0443\u0437\u043d\u0430\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0441\u0435\u0445 \u043c\u044d\u043f\u043f\u043e\u0432;<\/li>\n<li>\u0433\u0434\u0435-\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.init:     push rdx     push rdi     push rsi     mov rdi, START     mov rsi, END  .loop:     mov rdx, byte [rdi]     add rdi, 0x1000     cmp rdi, rsi     jl  .loop  .restore:     pop rsi     pop rdi     pop rdx <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u043c\u044d\u043f\u043f\u043e\u0432 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043c\u0435\u043d\u044f\u044f START, END \u2014 \u044d\u0442\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u044d\u043f\u043f\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0443\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0438\u0441\u043a\u043e\u043b <code>mlockall<\/code> \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e. \u041d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0430\u0436\u0435 \u0441 \u043d\u0443\u0436\u043d\u043e\u0439 <code>capability<\/code> <code>CAP_IPC_LOCK<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u2014 \u0446\u0438\u043a\u043b.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0431\u0440\u0435\u0439\u043a \u0432 gdb \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 <code>call vuln<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0431\u0440\u0435\u0439\u043a\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>task_struct<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043c\u044d\u043f\u043f\u0438\u043d\u0433\u0438, \u043a\u0440\u043e\u043c\u0435 guard page \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446;<\/li>\n<li>\u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 rwx, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, rwx \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u044d\u043f\u043f\u0430, \u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u043c);<\/li>\n<li>\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u043f\u0440\u044f\u043c\u043e \u043f\u0435\u0440\u0435\u0434 <code>call vuln<\/code> \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u043c\u0438 START, END \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438;<\/li>\n<li>\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434;<\/li>\n<li>\u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0446\u0438\u043a\u043b \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 <code>call vuln<\/code>, \u0441\u043d\u043e\u0432\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0440\u0435\u0439\u043a;<\/li>\n<li>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 START, END, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u044f\u0442\u044c \u0432 \u0446\u0438\u043a\u043b, \u0438 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0442, \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043c\u044d\u043f\u043f\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0431\u044b\u043b\u0438 \u0432 RAM. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorpmanchorfizicheskaya-pamyat\"><a name=\"pm\"><\/a>\u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 qemu \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u043c qemu:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ctrl+alt+2<\/code> \u2014 \u0432\u044b\u0437\u043e\u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430;<\/li>\n<li><code>pmemsave 0 0xffffffff raw<\/code> \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b <code>raw<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441 \u2014 WTF \u0431\u0443\u0434\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0434\u0430\u043c\u043f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>dmp<\/code> \u2014 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 WTF \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043f\u043e\u0434 Windows \u2014 \u0438 \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442 <code>dmp<\/code> \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 WTF, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0431\u0438\u0442\u043c\u0430\u043f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c <code>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u043c\u044f\u0442\u0438 \/ 8<\/code> \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u0436\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 \u0434\u0430\u043c\u043f \u0438\u0437 qemu.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>dmp<\/code> \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorcpuanchorprocessor\"><a name=\"cpu\"><\/a>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 qemu.<\/p>\n<p>  <\/p>\n<p>\u041e\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/lpabon\/qemu\/blob\/master\/include\/qom\/cpu.h#L89\"><code>\u0441\u0442\u0443\u043a\u0442\u0443\u0440\u0443 CPUState*<\/code><\/a>(\u043f\u043e\u043b\u0435 <code>env_ptr<\/code>), \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>cpu_exec<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0431\u0440\u0435\u0439\u043a \u043d\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c <code>CPUState* cpu<\/code>, \u0442\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e WTF \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u0438\u0434\u0438\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c WTF (\u043a\u043e\u043c\u043c\u0438\u0442 <code>e278c942848f2e211904320ff804df4ccb6fd7f8<\/code>).<\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/0vercl0k\/wtf\/blob\/e278c942848f2e211904320ff804df4ccb6fd7f8\/src\/wtf\/utils.cc#L168\">bool SanitizeCpuState(CpuState_t &amp;CpuState)<\/a>, \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">for (Seg_t *Seg : Segments) {     if (Seg->Reserved != ((Seg->Limit >> 16) &amp; 0xF)) {         fmt::print(\"Segment with selector {:x} has invalid attributes.\\n\",                  Seg->Selector);     return false;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/github.com\/0vercl0k\/wtf\/blob\/e278c942848f2e211904320ff804df4ccb6fd7f8\/src\/wtf\/kvm_backend.cc#L835\">bool KvmBackend_t::LoadSregs(const CpuState_t &amp;CpuState)<\/a>, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 <code>cs<\/code>, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <code>SEG(cs, Cs)<\/code> \u043d\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">Run_->s.regs.sregs.cs = {     .base = 0,     .limit = 0xffffffff,     .selector = CpuState.Cs.Selector,     .type = uint8_t(CpuState.Cs.SegmentType),     .present = uint8_t(CpuState.Cs.Present),     .dpl = uint8_t(CpuState.Cs.DescriptorPrivilegeLevel),     .db = 0,     .s = uint8_t(CpuState.Cs.NonSystemSegment),     .l = 1,     .g = 1,     .avl = 0, }; <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0447\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043d\u043e \u0432 qemu \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u043e\u0434 \u043d\u043e\u0436.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u0441\u0435 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/mgayanov\/wtf\">\u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043a\u0435<\/a>, \u0442\u0430\u043c \u0436\u0435 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 ELF.<\/p>\n<p>  <\/p>\n<h2 id=\"anchorcaseanchorprimer\"><a name=\"case\"><\/a>\u041f\u0440\u0438\u043c\u0435\u0440<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e user-space, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u043f\u043e\u0434 \u044d\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0423 WTF \u0442\u0430\u043a\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">dir\/     coverage\/ - \u0445\u0440\u0430\u043d\u0438\u0442 \u0444\u0430\u0439\u043b \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0431\u0438\u043d\u0430\u0440\u044f     crashes\/  - \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0440\u044d\u0448\u0438     harness\/  - \u043a\u0430\u043a\u043e\u0439-\u0442\u043e harness, \u043d\u0435\u0432\u0430\u0436\u043d\u043e     inputs\/   - \u043a\u043e\u0440\u043f\u0443\u0441 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445     outputs\/  - \u043a\u0435\u0439\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435     state\/    - \u0444\u0430\u0439\u043b\u044b regs.json, symbol-store.json, mem.dmp     trace\/    - \u043a\u0430\u043a\u043e\u0439-\u0442\u043e trace, \u043d\u0435\u0432\u0430\u0436\u043d\u043e<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c, \u044d\u0442\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u0443\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u044c <a href=\"https:\/\/github.com\/mgayanov\/wtf\/tree\/main\/linux_mode\/example\/stackoverflow\"><code>example\/stackoverflow<\/code><\/a>. \u0412\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0431\u0438\u043d\u0430\u0440\u0438, \u043e\u0431\u0440\u0430\u0437\u044b \u2014 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0422\u044f\u0436\u0435\u043b\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043b\u0435\u0436\u0430\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e <a href=\"https:\/\/github.com\/mgayanov\/wtf\/releases\/tag\/Linux_mode\">\u0442\u0443\u0442<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>archlinux-root-123.tar.xz<\/code> \u2014 \u043e\u0431\u0440\u0430\u0437 \u0434\u0438\u0441\u043a\u0430 \u0434\u043b\u044f qemu, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0435\u0436\u0430\u0442\u044c \u0432 <code>example\/archlinux-root-123.qcow2<\/code>;<\/li>\n<li><code>vmlinux-5.17.4-arch1.tar.xz<\/code> \u2014 \u044f\u0434\u0440\u043e, <code>example\/vmlinux-5.17.4-arch1<\/code>;<\/li>\n<li><code>mem.dmp.tar.xz<\/code> \u2014 \u0434\u0430\u043c\u043f, <code>example\/stackoverflow\/fuzzer\/state\/mem.dmp<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0435\u0433\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0435\u0442, \u0442\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 qemu, \u043e\u043d\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/qemu\/qemu &amp;&amp; \\ cd qemu &amp;&amp;       \\ mkdir build &amp;&amp;   \\ cd build &amp;&amp;      \\ CXXFLAGS=\"-g\"    \\ CFLAGS=\"-g\"      \\ ..\/configure     \\     --cpu=x86_64 \\     --target-list=\"x86_64-softmmu x86_64-linux-user\" &amp;&amp; \\ make<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"anchorsymbol-storeanchorgranicy-fazzinga-symbol-storejson\"><a name=\"symbol-store\"><\/a>\u0413\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 symbol-store.json<\/h3>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b WTF \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u043b, \u043a\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u0430 \u043a\u0430\u043a\u043e\u0435 \u2014 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0435, \u0438 \u0433\u0434\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u043d\u0433. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0445\u043e\u0439 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/54\/mb\/bs\/54mbbsftesgx9-gp_euhw-bpweu.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/54\/mb\/bs\/54mbbsftesgx9-gp_euhw-bpweu.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<ul>\n<li><code>rip<\/code> \u2014 \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e, \u044d\u0442\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u043d\u044f\u0442\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e;<\/li>\n<li>\u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430 <code>call vuln<\/code> \u2014 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435;<\/li>\n<li>\u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>call ___stack_chk_fail<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>vuln<\/code> \u2014 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u0435\u0442\u0435\u043a\u0442 \u043f\u043e\u0440\u0447\u0438 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0438 \u0441\u0442\u0435\u043a\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0410\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0432 <a href=\"https:\/\/github.com\/mgayanov\/wtf\/blob\/main\/linux_mode\/example\/stackoverflow\/fuzzer\/state\/symbol-store.json\"><code>state\/symbol-store.json<\/code><\/a>.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <code>\"stop\":\"0x555555555272\", \"stack_chk_failed\":\"0x5555555551ca\"<\/code><\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b, \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043a \u0443\u0431\u0435\u0436\u0438\u0442, \u0444\u0430\u0437\u0437\u0435\u0440 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0431\u0443\u0434\u0443\u0442 \u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u043b\u044c <code>asm_exc_divide_error<\/code>;<\/li>\n<li>\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 <code>asm_exc_page_fault<\/code>, <code>page_fault_oops<\/code>;<\/li>\n<li><code>force_sigsegv<\/code><\/li>\n<li>&#8230;<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u044f\u0434\u0440\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0442\u0430\u0440\u0433\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<h3 id=\"anchormemanchordamp-pamyati-memdmp\"><a name=\"mem\"><\/a>\u0414\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 mem.dmp<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 gdb, \u043f\u0435\u0440\u0432\u044b\u0439 \u2014 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 qemu, \u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443. \u0423\u0434\u043e\u0431\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 tmux \u0438 \u044d\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">tmux-pane1: .\/gdb_server.sh  tmux-pane2: .\/gdb_connect.sh stackoverflow <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 qemu \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0431\u0438\u043d\u0430\u0440\u044c, \u0432\u0432\u043e\u0434\u0438\u043c 123, \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0440\u0435\u0439\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/q4\/z1\/an\/q4z1anofibnquskiuqfsqlx-mcm.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/q4\/z1\/an\/q4z1anofibnquskiuqfsqlx-mcm.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 qemu, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>ctrl+alt+2<\/code>, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>pmemsave 0 0xffffffff<\/code> \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043c\u043f \u0432 \u0444\u0430\u0439\u043b <code>raw<\/code>.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/wg\/4x\/ee\/wg4xeejezsxrbgwnqt3x3now-d0.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/wg\/4x\/ee\/wg4xeejezsxrbgwnqt3x3now-d0.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/convert.sh<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043d\u0430\u043a\u043e\u043b\u0435\u043d\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 <code>raw2dmp<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 <code>mem.dmp<\/code> \u0438\u0437 <code>raw<\/code> \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorregsanchordamp-processora-regsjson\"><a name=\"regs\"><\/a>\u0414\u0430\u043c\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 regs.json<\/h3>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0437\u0430\u043c\u0435\u0440\u043b\u0430 \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>call vuln<\/code>, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0430\u043c\u043f\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 gdb \u0436\u043c\u0435\u043c <code>ctrl+c<\/code>, \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <a href=\"https:\/\/github.com\/mgayanov\/wtf\/blob\/main\/linux_mode\/scripts\/qemu.py\"><code>cpu<\/code><\/a>. \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430\u0439\u0434\u0435\u0442 <code>CPUState*<\/code> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 qemu \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u0442 \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432 <code>regs.json<\/code>.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/4s\/el\/_y\/4sel_yitfn2cjoco08b9q-vayb4.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/4s\/el\/_y\/4sel_yitfn2cjoco08b9q-vayb4.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u041e\u0421 \u2014 <code>regs.json<\/code>, <code>symbol-store.json<\/code>, <code>mem.dmp<\/code>. \u041c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c qemu, gdb.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorcovanchorpokrytie-stackoverflowcov\"><a name=\"cov\"><\/a>\u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 stackoverflow.cov<\/h3>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 WTF \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0431\u0438\u043d\u0430\u0440\u044f.<\/p>\n<p>  <\/p>\n<p>\u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 Ida \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 <a href=\"https:\/\/github.com\/mgayanov\/wtf\/blob\/main\/linux_mode\/scripts\/gen_cov.py\">gen_cov.py<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u044c;<\/li>\n<li><code>File -> Script file<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b <code>stackoverflow.cov<\/code>, \u0435\u0433\u043e \u043c\u0435\u0441\u0442\u043e \u2014 \u0432 <code>example\/stackoverflow\/fuzzer\/state<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorfuzzeranchorfazzer\"><a name=\"fuzzer\"><\/a>\u0424\u0430\u0437\u0437\u0435\u0440<\/h3>\n<p>  <\/p>\n<p>\u0424\u0430\u0437\u0437\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/mgayanov\/wtf\/blob\/main\/src\/wtf\/fuzzer_stackoverflow.cc\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool Init(const Options_t &amp;Opts, const CpuState_t &amp;) {    if (!g_Backend->SetBreakpoint(\"stop\", [](Backend_t *Backend) {         Backend->Stop(Ok_t());       })) {     DebugPrint(\"Failed to SetBreakpoint stop\\n\");     return false;   }    if (!g_Backend->SetBreakpoint(\"stack_chk_failed\", [](Backend_t *Backend) {         Backend->Stop(Crash_t(\"crash\"));        })) {     DebugPrint(\"Failed to SetBreakpoint stack_chk_failed\\n\");     return false;   }   return true; } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0440\u0446\u0438\u044f \u043c\u0443\u0441\u043e\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool InsertTestcase(const uint8_t *Buffer, const size_t BufferSize) {    const Gva_t Rdi = Gva_t(g_Backend->GetReg(Registers_t::Rdi));    if (!g_Backend->VirtWrite(Rdi, Buffer, BufferSize, true)) {     DebugPrint(\"Failed to write next testcase!\");     return false;   }    g_Backend->SetReg(Registers_t::Rsi, BufferSize);    return true; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c WTF: \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u0444\u0430\u0437\u0437\u0435\u0440\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. WTF \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u043a\u0438.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/lb\/g-\/7r\/lbg-7rfmokaw_tvfkvg5s1pvcti.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/lb\/g-\/7r\/lbg-7rfmokaw_tvfkvg5s1pvcti.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">tmux-pane1:     .\/run.master  tmux-pane2:     sudo .\/run.worker<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0430\u0441\u0442\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u043f\u043e\u0434\u043b\u043a\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u0437\u0430 \u043d\u043e\u0432\u044b\u043c\u0438 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0443.<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/mw\/u3\/z9\/mwu3z9bq0smhsz96qkjgbjtcppm.png\" data-src=\"https:\/\/habrastorage.org\/webt\/mw\/u3\/z9\/mwu3z9bq0smhsz96qkjgbjtcppm.png\"\/><\/div>\n<p>  <\/p>\n<p>It works!<\/p>\n<p>  <\/p>\n<h2 id=\"anchorendanchorvyvod\"><a name=\"end\"><\/a>\u0412\u044b\u0432\u043e\u0434<\/h2>\n<p>  <\/p>\n<p>What The Fuzz \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u044e\u0437\u0435\u0440\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u0415\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 Linux, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e WTF \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u0412\u0441\u0435 \u0440\u0430\u0432\u043d\u043e WTF \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u044f\u0434\u0440\u0430 \u0438\u043b\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e Linux \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 snapshot-based \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0435.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/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\/company\/dsec\/blog\/664230\/\"> https:\/\/habr.com\/ru\/company\/dsec\/blog\/664230\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rv\/3x\/xy\/rv3xxyzfohayekhekmnh3b4cvf8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rv\/3x\/xy\/rv3xxyzfohayekhekmnh3b4cvf8.png\"\/><\/div>\n<p>  <\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0444\u0430\u0437\u0437\u0435\u0440 <a href=\"https:\/\/github.com\/0vercl0k\/wtf\">What The Fuzz<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 (\u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f) \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>blackbox \u0444\u0430\u0437\u0437\u0435\u0440;<\/li>\n<li>snapshot-based \u0444\u0430\u0437\u0437\u0435\u0440.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u044c \u0431\u0435\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u0440 \u0444\u0430\u0437\u0437\u0435\u0440\u0430 <a href=\"https:\/\/doar-e.github.io\/blog\/2021\/07\/15\/building-a-new-snapshot-fuzzer-fuzzing-ida\/\">\u043d\u0430\u0442\u0440\u0430\u0432\u0438\u043b<\/a> WTF \u043d\u0430 Ida Pro \u0438 \u043d\u0430\u0448\u0435\u043b \u0442\u0430\u043c \u043a\u0443\u0447\u0443 \u0431\u0430\u0433\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0443 \u0441 snapshot&#8217;\u0430\u043c\u0438, WTF \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 WTF, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0431\u0438\u043d\u0430\u0440\u044f\u043c\u0438 \u043f\u043e\u0434 x86;<\/li>\n<li>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u043d\u0433 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 Linux, \u0438 \u043d\u0430 Windows;<\/li>\n<li>\u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u043c \u0431\u0438\u043d\u0430\u0440\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u043d\u0430\u0440\u044c \u043f\u043e\u0434 Windows.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u0435\u043b\u044c\u0437\u044f \u0444\u0430\u0437\u0437\u0438\u0442\u044c ELF?<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u043e\u0436\u043d\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c snapshot \u0434\u043b\u044f Linux. \u0412\u0441\u0435-\u0442\u0430\u043a\u0438 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u0438\u0448\u0435\u043d\u044c \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f Windows.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0437 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-332975","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332975","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=332975"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332975\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}