{"id":260468,"date":"2015-07-01T10:16:02","date_gmt":"2015-07-01T06:16:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=260468"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=260468","title":{"rendered":"\u0425\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u044b\u0439 \u043e\u043b\u0434\u0441\u043a\u0443\u043b: QEMU \u0438 \u0440\u0435\u0432\u0435\u0440\u0441 \u043e\u0431\u0440\u0430\u0437\u0430 \u0444\u043b\u043e\u043f\u043f\u0438\u043a\u0430"},"content":{"rendered":"<p>     \t<img decoding=\"async\" align=\"left\" src=\"https:\/\/habrastorage.org\/files\/a0e\/1d1\/28a\/a0e1d128aba04e2aaf1e25a1c97a941c.png\"\/><br \/>  \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 &quot;<a href=\"http:\/\/neoquest.ru\/timeline.php?year=2015\">\u043e\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438<\/a>&quot; NeoQUEST-2015, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u0437\u0430\u0432\u0442\u0440\u0430, 2 \u0438\u044e\u043b\u044f \u0432 11:00, \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c write-up \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043d\u0435\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f online-\u044d\u0442\u0430\u043f\u0430!<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0445\u043e\u0434 \u043d\u0430 \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439, \u0438 \u043c\u044b \u0436\u0434\u0451\u043c \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e! NeoQUEST \u2014 \u044d\u0442\u043e \u0448\u0430\u043d\u0441 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435, \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u00ab\u0445\u0430\u043a\u0435\u0440\u0441\u043a\u0438\u0435\u00bb \u043d\u0430\u0432\u044b\u043a\u0438, \u043f\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438, \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u043c \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043b\u0443\u0447\u0448\u0438\u0445 \u0445\u0430\u043a\u0435\u0440\u043e\u0432, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f! <\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u043c\u044b \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 NeoQUEST-2015 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/255629\/\">\u0442\u0443\u0442 <\/a>\u0438 <a href=\"http:\/\/neoquest.ru\/timeline.php?year=2015\">\u0442\u0430\u043c<\/a>. <\/p>\n<p>  \u0417\u0430\u0434\u0430\u043d\u0438\u0435 online-\u044d\u0442\u0430\u043f\u0430, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u00ab\u043d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442\u00bb, \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u043b\u0434\u0441\u043a\u0443\u043b\u044c\u043d\u044b\u043c: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0436\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0448\u043b\u0430 \u043e \u0434\u0430\u043c\u043f\u0435 \u0432\u0441\u0435\u043c\u0438 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e \u0444\u043b\u043e\u043f\u043f\u0438-\u0434\u0438\u0441\u043a\u0430! \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u043a\u0432\u0435\u0441\u0442\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0435\u0432\u0435\u0440\u0441\u043e\u043c \u0438 \u0441 QEMU \u2014 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c!<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h4><b>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a \u0437\u0430\u0434\u0430\u043d\u0438\u044e?<\/b><\/h4>\n<p>  \u0412 \u0437\u0430\u0434\u0430\u043d\u0438\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0444\u0430\u0439\u043b task.bin. \u0421\u0443\u0434\u044f \u043f\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0435, \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0439 \u0434\u0438\u0441\u043a\u0435\u0442\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0435\u0433\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0435 file.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/89f\/1f7\/237\/89f1f723760641119da4960b38ab7543.png\"\/><\/p>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u0435\u0440\u043d\u044b\u043c, \u044d\u0442\u043e \u0434\u0438\u0441\u043a\u0435\u0442\u0430. \u0427\u0442\u043e \u0436\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441 \u043d\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c QEMU. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c <\/p>\n<pre><code class=\"cpp\">qemu \u2013fda task.bin <\/code><\/pre>\n<p>  \u0438 \u2026<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/894\/c6f\/605\/894c6f605a8340dcab679049f6a78fc8.png\"\/><\/p>\n<p>  \u2026 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e. \u041f\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u2013 QEMU \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u201cLoading\u201d \u0438 \u0437\u0430\u0432\u0438\u0441\u043b\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u043a \u043d\u0435\u0439 gdb \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f gdb \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0443.<\/p>\n<h4><b>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430: \u0432\u0437\u0433\u043b\u044f\u0434 \u0438\u0437\u043d\u0443\u0442\u0440\u0438<\/b><\/h4>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043e\u043a\u043d\u043e QEMU \u0438 \u043d\u0430\u0436\u043c\u0435\u043c Ctrl + Alt + 2, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a\u043e\u043c\u0430\u043d\u0434. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0432 \u043d\u0435\u0439 \u201cinfo registers\u201d \u0438 \u043f\u0440\u043e\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043c \u0432\u0432\u0435\u0440\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 Ctrl + Up.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a14\/d48\/0ca\/a14d480ca2a848c1a083b104e6c044e7.png\"\/><\/p>\n<p>  \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0432\u044b\u0448\u0435 \u043e\u0431\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e\u043b\u044f, \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 \u2013 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Control_register#CR0\">CR0<\/a> \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b <a href=\"http:\/\/wiki.osdev.org\/Global_Descriptor_Table\">\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430<\/a>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 CS. \u0418\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f CR0 \u0438 CS.ATTR \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 gdb \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<pre><code class=\"cpp\">set architecture i386 <\/code><\/pre>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 gdb 32\u0431\u0438\u0442\u043d\u044b\u0439, \u044d\u0442\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c QEMU \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 \u201c\u2013s\u201d(\u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a) \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c gdb, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0432 \u043d\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u201ctarget remote localhost:1234\u201d. \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432\u043e\u043a\u0440\u0443\u0433 EIP, \u0438 \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 HALT, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0441\u0442\u0435\u043a\u0435 \u043d\u0443\u043b\u0438. \u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u044b \u0441\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u043b\u0438? \u041f\u043e\u0445\u043e\u0436\u0435, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/aca\/c62\/39d\/acac6239dc5242cfaeea798f49970b88.png\"\/><\/p>\n<h4><b>\u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043a\u043e\u0434\u0430<\/b><\/h4>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044b\u0436\u043e\u043a \u0432 HALT, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u044f \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u044f \u043a\u043e\u0434! \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0434\u0438\u0441\u043a\u0435\u0442\u044b. \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441 \u0444\u043b\u043e\u043f\u043f\u0438 \u0432 legacy \u0440\u0435\u0436\u0438\u043c\u0435 (\u0430 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0438 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442), BIOS \u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \u0438 \u0433\u0440\u0443\u0437\u0438\u0442 \u0435\u0433\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x7c00. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0437\u0430\u0434\u0430\u0447\u0430 \u043a\u043e\u0434\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u00ab\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u00bb \u0441 \u0434\u0438\u0441\u043a\u0430 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0437\u0430 \u043a\u043e\u0434 \u0442\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0443\u0442\u0438\u043b\u0438\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Dd\">dd<\/a> \u0438 <a href=\"http:\/\/we.easyelectronics.ru\/CADSoft\/obzor-vspomogatelnyh-utilit-iz-gcc-toolchain-chast-2.html\">objdump<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/6ca\/aea\/ea7\/6caaeaea74004f5ebc401b979ce53cef.png\"\/><\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u0432 \u043a\u043e\u0434 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f ljmp \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 0x7c61. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0431\u0430\u0437\u0443, \u0440\u0430\u0432\u043d\u0443\u044e 0x7c00, \u0442\u043e \u0432 \u043c\u043e\u0435\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0430\u0434\u0440\u0435\u0441\u0443 0x7c61 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 0x61. <\/p>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c 32\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u0439\u0434\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 gdt, \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 gdtr, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u0435\u0436\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x7d95 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 lgdtw \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x7c4d(0x4d \u0432 \u043d\u0430\u0448\u0435\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435).<\/p>\n<p>  \u0412 gdt \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u0438\u043f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432 8, \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 ljmp. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043a\u043e\u0434 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x7c61 32\u0431\u0438\u0442\u043d\u044b\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c objdump\u2019\u043c \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0412\u044b\u0434\u0435\u043b\u0438\u043c \u0438\u0437 task.bin \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x61 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0441 \u043a\u043e\u0434 \u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a 32\u0431\u0438\u0442\u043d\u044b\u0439.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/051\/676\/c5e\/051676c5e942407aa6441ced959c79b0.png\"\/><\/p>\n<p>  \u0412 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043a\u043e\u0434\u0435 \u0432 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044b\u0436\u043e\u043a \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0x80000. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e QEMU \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<pre><code class=\"cpp\">qemu \u2013s \u2013S \u2013fda task.bin <\/code><\/pre>\n<p>  gdb \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0440\u0430\u043d\u044c\u0448\u0435. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u2013 \u201cb *0x80000\u201d \u0432 gdb, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u2013 \u201cc\u201d. \u041f\u043e\u0441\u043b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/550\/82f\/3fd\/55082f3fde3d41368febfbee481f05d0.png\"\/><\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 jmp \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201csi\u201d \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u043a\u043e\u0434 \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3a5\/05d\/cc0\/3a505dcc08d14cf8b01168cae927f7de.png\"\/><\/p>\n<p>  \u041a\u043e\u0434 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e ret \u043d\u0435\u0431\u043e\u0433\u0430\u0442 \u043d\u0430 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d call, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0447\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c. \u0421\u0434\u0430\u043c\u043f\u0438\u043c 4\u041a\u0431 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x82961, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0437\u0430 \u043a\u043e\u0434 \u0442\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u0414\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 gdb \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d0d\/5ce\/f1b\/d0d5cef1bcf5454da6d796e502c7fe02.png\"\/><\/p>\n<p>  \u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0434\u0430\u043c\u043f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<pre><code class=\"cpp\">objdump \u2013D \u2013b binary \u2013m i386 .\/eip_dump.bin &gt; eip.txt <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x82961 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e call\u2019\u043e\u0432, \u043d\u043e \u0441\u0430\u043c\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c ret\u2019\u043e\u043c \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u0432 halt, \u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0432\u0438\u0434\u0438\u043c\u043e\u043c \u043a\u043e\u0434\u0435 halt\u2019\u0430 \u043d\u0435\u0442 \u2014 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 call\u2019\u044b \u0438 ret \u0432 \u043a\u043e\u043d\u0446\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0445 \u043d\u0430\u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u0432: 0x82970, 0x82aef, 0x82A5B, 0x82A7D, 0x82A91, 0x82AB0, 0x82AEF, 0x82B10, 0x82B32, 0x82B46, 0x82B65, 0x82C53, 0x82CAD. \u0414\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u0435. \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435. \u0418\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 ret \u2013 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 push \u043f\u0435\u0440\u0435\u0434 ret, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0442\u043e\u0447\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u0430, \u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0434. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c si \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0x4000020.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c0c\/9b5\/2e3\/c0c9b52e3b16448287b9b0e2bcd59318.png\"\/><\/p>\n<h4><b>\u0423\u0440\u0430, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0435!<\/b><\/h4>\n<p>  \u041a\u0430\u043a \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f halt \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x4000260, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0436\u0435 \u043a \u043d\u044b\u043d\u0435\u0448\u043d\u0435\u043c\u0443 eip. \u0427\u0442\u043e \u0431\u044b \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 \u0438\u0441\u043a\u0430\u0442\u044c call\u2019\u044b \u0438 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u044b \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u2013 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e eip != 0x4000260. \u0421\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">b *0x4000020 commands 1 \twhile $pc != 0x4000260 \t\tx \/1i $pc \t\tsi \tend \tx \/1i $pc end  c <\/code><\/pre>\n<p>  \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0444\u0430\u0439\u043b script.txt \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0433\u043e \u0432 gdb \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 source. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/008\/987\/5d7\/0089875d7c3e4d6b878d1d5d388c3912.png\"\/><\/p>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u0431\u0440\u043e\u0441\u0430\u044e\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u0434\u0432\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 cpuid, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435. \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0436\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442. \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c eax = 0x80000000, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 eax \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 cpuid. \u0414\u0430\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 0x80000001, \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c eax = 0x800000001, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f 29-\u0439 \u0431\u0438\u0442 edx, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 1, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Long Mode.<\/p>\n<p>  \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e QEMU, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Long Mode. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/196\/5c2\/db7\/1965c2db74254f19aace86b5ad8d1ba3.png\"\/><\/p>\n<p>  \u0423\u0440\u0430, \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435! \u0414\u0435\u043b\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u2013 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e! \u0412\u043e\u043e\u0431\u0449\u0435, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b, \u0435\u0441\u043b\u0438 linux, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c, \u0431\u044b\u043b 64\u0445 \u0431\u0438\u0442\u043d\u044b\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e \u0441 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<h4><b>\u041f\u043e\u0434\u0431\u043e\u0440 \u043f\u0430\u0440\u043e\u043b\u044f<\/b><\/h4>\n<p>  \u0414\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u201cpassword\u201d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u043b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<p>  \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043b\u0438\u0436\u0435 \u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0430\u0440\u043e\u043b\u044f. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e, \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043c\u044b \u043e\u043a\u0430\u0436\u0435\u043c\u0441\u044f \u0441 \u0443\u0436\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c, \u0435\u0449\u0435 \u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u041e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u0442\u0435\u043a\u0443 \u0434\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c20\/381\/338\/c203813382364cadb5db0e209e693c44.png\"\/><\/p>\n<p>  \u041a\u0430\u043a \u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u0432 \u043a\u043e\u0434\u0435, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e? \u041f\u0435\u0447\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xb8000 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435.<\/li>\n<li>\u0421\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0448\u0440\u0438\u0444\u0442\u044b, \u043f\u043e \u0442\u043e\u0447\u043a\u0430\u043c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b. \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c BIOS VBE, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/176707\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/li>\n<\/ol>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0412\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 0xb8000, \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 80 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f 2 \u0431\u0430\u0439\u0442\u0430 (\u0441\u0438\u043c\u0432\u043e\u043b + \u0446\u0432\u0435\u0442), \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0432\u0435\u043d 0xb8000 + 80 * 2 * 3 = 0xb81e0. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u0430 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0432 gdb \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a: <\/p>\n<pre><code class=\"cpp\">watch *0xb81e0 <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/643\/fd4\/a35\/643fd4a351e24e14a385c22b3245b6d3.png\"\/><\/p>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0432\u0435\u0440\u043d\u043e, \u043c\u044b \u0432\u044b\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u0411\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2013 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u0435\u0447\u0430\u0442\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f. \u0422\u043e\u0433\u0434\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c4f\/c0e\/820\/c4fc0e820ce6474185023da5b09654a5.png\"\/><\/p>\n<p>  \u041d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u2013 \u043d\u0430\u0439\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e CheckPass(). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 PrintPass(), \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442, \u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u201c Password incorrect.\u201d \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043e, \u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0438 \u0431\u044b\u043b \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u2013 \u043e\u043d \u0441\u0442\u043e\u044f\u043b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 PrintPass() \u0432 \u0442\u0435\u043b\u0435 task(). \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430. \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0444\u043b\u0430\u0433\u043e\u0432, \u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u201cpush $rbp; mov $rsp, $rbp\u201d \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u0441\u0442\u0435\u043a\u0430. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 $rbp+8 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430. \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f12\/ca0\/1b3\/f12ca01b38ae48408ca371f4a40a5123.png\"\/><\/p>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0435\u0434 \u0430\u0434\u0440\u0435\u0441\u043e\u043c 0xfffff8000020e5b5 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f call. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435. <\/p>\n<h4><b>\u041f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442<\/b><\/h4>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0441\u0442\u0435\u043a, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f gdb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u0442\u0435\u043a\u0443, \u043f\u043e\u043a\u0430 QEMU \u043d\u0435 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u201cPassword incorrect\u201d.<\/p>\n<pre><code class=\"cpp\">set confirm off  # save start values of first 4 chars from 5th row of screen set $start_vmem_val = *(unsigned long long*)(0xb8280) set $curr_vmem_val = $start_vmem_val  # if nothing changed in 5th row of screen, we continue while $start_vmem_val == $curr_vmem_val \t# delete all old breakpoints \td \t \t# get return addres from stack and set breakpoint on it. Then, continue. \tset $ret_addr = *(unsigned long long*)($rbp + 8) \tb *$ret_addr \tc \t \tset $curr_vmem_val = *(unsigned long long*)(0xb8280) end <\/code><\/pre>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0444\u0430\u0439\u043b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 source, \u043a\u0430\u043a \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e. \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fc7\/6ec\/29a\/fc76ec29ae08498ebb8247d92ab0b0c3.png\"\/><\/p>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0432\u0438\u0441, \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u0432 \u0432 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x20069c, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u201cPassword incorrect\u201d \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043e. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 task(), \u0432\u0435\u0440\u043d\u043e. \u0417\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f task() \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u201cPassword incorrect\u201d \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u043d\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 PrintPass(), \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439, \u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442.<\/p>\n<h4><b>\u041f\u043e\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442\u0441\u044f&#8230;<\/b><\/h4>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f \u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 0xfffff80000205808: \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c QEMU, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0432\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u0421\u043d\u0438\u043c\u0435\u043c \u0434\u0430\u043c\u043f \u043a\u043e\u0434\u0430, \u043e\u0442\u0441\u0442\u0443\u043f\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442 \u043d\u0430\u0437\u0430\u0434 \u043e\u0442 RIP, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/40d\/4fe\/6a9\/40d4fe6a97e94ee1b7e9dfe7c242ab72.png\"\/><\/p>\n<p>  \u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u043c\u043f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201cobjdump \u2013D \u2013b binary \u2013m i386:x86-64 \u2013adjust-vma=0xfffff800002057fc task.bin &gt; task.txt\u201d. <\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff80000203358, \u0438 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u043c\u043f\u0435.<\/p>\n<p>  fffff800002057fc &lt;.data&gt;:<br \/>  fffff800002057e3: 48 8d 85 60 ff ff ff lea -0xa0(%rbp),%rax<br \/>  fffff800002057ea: 48 89 c6 mov %rax,%rsi<br \/>  fffff800002057ed: 48 bf 56 15 21 00 00 movabs $0xfffff80000211556,%rdi<br \/>  fffff800002057f4: f8 ff ff <br \/>  fffff800002057f7: b8 00 00 00 00 mov $0x0,%eax<br \/>  fffff800002057fc: 48 ba 58 33 20 00 00 movabs $0xfffff80000203358,%rdx<br \/>  fffff80000205803: f8 ff ff <br \/>  fffff80000205806: ff d2 callq *%rdx<br \/>  rip =&gt; fffff80000205808: 48 b8 08 15 21 00 00 movabs $0xfffff80000211508,%rax<br \/>  fffff8000020580f: f8 ff ff<br \/>  \u2026.<br \/>  fffff80000205930: 48 bf 65 15 21 00 00 movabs $0xfffff80000211565,%rdi<br \/>  fffff80000205937: f8 ff ff <br \/>  fffff8000020593a: b8 00 00 00 00 mov $0x0,%eax<br \/>  fffff8000020593f: 48 ba 58 33 20 00 00 movabs $0xfffff80000203358,%rdx<br \/>  fffff80000205946: f8 ff ff <br \/>  fffff80000205949: ff d2 callq *%rdx<br \/>  \u2026.<br \/>  fffff8000020594d: 48 bf 78 15 21 00 00 movabs $0xfffff80000211578,%rdi<br \/>  fffff80000205954: f8 ff ff <br \/>  fffff80000205957: b8 00 00 00 00 mov $0x0,%eax<br \/>  fffff8000020595c: 48 ba 58 33 20 00 00 movabs $0xfffff80000203358,%rdx<br \/>  fffff80000205963: f8 ff ff <br \/>  fffff80000205966: ff d2 callq *%rdx<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 64-\u0431\u0438\u0442\u043d\u044b\u0439 \u0438 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0432 64\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u043a\u043e\u0434\u0435:  <\/p>\n<ol>\n<li>\u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/X86_calling_conventions#Microsoft_x64_calling_convention\">Microsoft x64 calling convention<\/a>\u00bb<\/li>\n<li>\u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/X86_calling_conventions#System_V_AMD64_ABI\">System V ABI<\/a>\u00bb<\/li>\n<\/ol>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f System V, \u0442\u0430\u043a \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f call \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b RDI, RSI, RDX \u0438 \u0442.\u0434. \u041c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0432\u044b\u0432\u0435\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442, \u0438 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0412 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043e\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 0xfffff80000211556 \u0438 -0xa0(%rbp), \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u2013 \u0441 0xfffff80000211565, \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u0440\u0430\u0437 \u2013 \u0441 0xfffff80000211578. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u044d\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/21d\/c74\/d0d\/21dc74d0d8d34e7784fc18758da285d8.png\"\/><\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f 0xfffff80000203358 \u2013 \u044d\u0442\u043e printf, \u0438, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043e\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0421\u0442\u0440\u043e\u043a\u0430 \u00ab123\u00bb \u2014 \u044d\u0442\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0447\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  fffff8000020591c: movabs $0xfffff800002114c0,%rax<br \/>  fffff80000205926: mov 0x38(%rax),%rax<br \/>  fffff8000020592a: cmp $0x1,%rax if (g_struct.res == 1)<br \/>   ,====&lt; fffff8000020592e: jne 0xfffff8000020594d {<br \/>  | fffff80000205930: movabs $0xfffff80000211565,%rdi <br \/>  | fffff8000020593a: mov $0x0,%eax<br \/>  | fffff8000020593f: movabs $0xfffff80000203358,%rdx <br \/>  | fffff80000205949: callq *%rdx printf(\u201cPassword correct!\u201d);<br \/>  | ,==&lt; fffff8000020594b: jmp 0xfffff80000205968 }<br \/>  `====&gt; fffff8000020594d: movabs $0xfffff80000211578,%rdi else<br \/>   | fffff80000205957: mov $0x0,%eax {<br \/>   | fffff8000020595c: movabs $0xfffff80000203358,%rdx <br \/>   | fffff80000205966: callq *%rdx printf(\u201cPassword incorrect.\u201d);<br \/>   `==&gt; fffff80000205968: movabs $0xfffff80000204b83,%rax }<br \/>  fffff80000205972: callq *%rax some_func();<br \/>  fffff80000205974: leaveq <br \/>  fffff80000205975: retq<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff800002114c0 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c 0x38. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0432 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  fffff8000020587c: mov $0x48,%edx<br \/>  fffff80000205881: mov $0x0,%esi<br \/>  fffff80000205886: movabs $0xfffff800002114c0,%rdi<br \/>  fffff80000205890: movabs $0xfffff80000203d40,%rax<br \/>  fffff8000020589a: callq *%rax memset(&#038;g_struct, 0, 0x48);<br \/>  fffff8000020589c: lea -0xa0(%rbp),%rdx<br \/>  fffff800002058a3: movabs $0xfffff800002114c0,%rax<br \/>  fffff800002058ad: mov %rdx,(%rax) *(u64*)&#038; g_struct = password;<br \/>  fffff800002058b0: lea -0xa0(%rbp),%rdx<br \/>  fffff800002058b7: movabs $0xfffff800002114c0,%rax<br \/>  fffff800002058c1: mov %rdx,0x20(%rax) *((u64*)&#038; g_struct + 4) = password;<\/p>\n<p>  \u0412\u044b\u0448\u0435 \u043f\u043e \u043a\u043e\u0434\u0443 \u0435\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0442\u0440\u0435\u043c\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0415\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u0434\u0443 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e memset. \u0412 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0432\u0430\u0436\u0434\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c, \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0 \u0438 32(0x20). \u0412\u0438\u0434\u0438\u043c\u043e, \u044d\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  ; \u0432\u044b\u0448\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b g_struct<br \/>  fffff800002058c5: movzbl -0x1(%rbp),%eax l_var1 = -0x1(%rbp);<br \/>  fffff800002058c9: mov %rax,%rdi<br \/>  fffff800002058cc: movabs $0xfffff80000203e94,%rax<br \/>  fffff800002058d6: callq *%rax if (func1(l_var1))<br \/>  fffff800002058d8: test %rax,%rax {<br \/>  fffff800002058db: sete %al<br \/>  fffff800002058de: test %al,%al<br \/>  ,====&lt; fffff800002058e0: je 0xfffff80000205909 <br \/>  | fffff800002058e2: movabs $0xfffff80000211508,%rax asm(<br \/>  | fffff800002058ec: mov (%rax),%rax push *0xfffff80000211508<br \/>  | fffff800002058ef: mov %rax,%rdx retq<br \/>  | fffff800002058f2: push %rdx );<br \/>  | fffff800002058f3: retq <br \/>  | fffff800002058f4: movzbl -0x1(%rbp),%eax<br \/>  | fffff800002058f8: mov %rax,%rdi<br \/>  | fffff800002058fb: movabs $0xfffff800002040b2,%rax<br \/>  | fffff80000205905: callq *%rax func2(l_var1);<br \/>  | ,==&lt; fffff80000205907: jmp fffff8000020591c }<br \/>  `====&gt; fffff80000205909: movzbl -0x1(%rbp),%eax else<br \/>   | fffff8000020590d: mov %rax,%rdi {<br \/>   | fffff80000205910: movabs $0xfffff800002040b2,%rax <br \/>   | fffff8000020591a: callq *%rax func2(l_var1);<br \/>   `==&gt; fffff8000020591c: movabs $0xfffff800002114c0,%rax }<br \/>  ; \u043d\u0438\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/p>\n<p>  \u0416\u0435\u043b\u0442\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f push\/ret \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u044f\u0441\u043d\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0435. \u041c\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c 0xfffff800002040b2 \u0438 0xfffff80000203e94 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 push, retq, \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044b\u0436\u043e\u043a \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0xfffff80000600000, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u043a\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8b4\/be7\/642\/8b4be7642c064a6daf67405489a68382.png\"\/><\/p>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0xfffff80000209ac5. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0434\u0440\u0435\u0441\u0443 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u201cinfo mem\u201d \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 QEMU.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/014\/85a\/efc\/01485aefcd4140bbbd0688095c4a8ad7.png\"\/><\/p>\n<p>  \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, 2\u0445 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 0xf80000600000 \u043d\u0435 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d. \u041f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0435 4 \u0446\u0438\u0444\u0440\u044b \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e, \u0430 \u043d\u0435 f \u2013 \u043f\u0440\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 64\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u0435\u0440\u0445\u043d\u0438\u0435 16 \u0431\u0438\u0442 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0438 \u0430\u0434\u0440\u0435\u0441 0x0 \u0440\u0430\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff00000000000. \u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043f\u043e \u043d\u0435\u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 #PF(page fault), \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 CR2, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff80000209ac5. \u0412 \u0432\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0440\u0430\u0437 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 CR2 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 QEMU \u2013 \u043e\u043d\u043e \u0440\u0430\u0432\u043d\u043e 0xfffff80000600000. <\/p>\n<h4><b>\u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434<\/b><\/h4>\n<p>  \u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0421 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff8000020da3c. \u0412 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e:<br \/>   \u2026.<br \/>   0xfffff8000020da5b: cmp $0xe,%rax <br \/>   0xfffff8000020da5f: jne 0xfffff8000020da95 <br \/>   0xfffff8000020da61: mov -0x18(%rbp),%rax <br \/>   0xfffff8000020da65: mov 0xb8(%rax),%rdx <br \/>   0xfffff8000020da6c: movabs $0xfffff80000211508,%rax <br \/>   0xfffff8000020da76: mov (%rax),%rax <br \/>   0xfffff8000020da79: cmp %rax,%rdx <br \/>   0xfffff8000020da7c: jb 0xfffff8000020da95 <br \/>   0xfffff8000020da7e: mov -0x18(%rbp),%rax <br \/>   0xfffff8000020da82: mov %rax,%rdi <br \/>   0xfffff8000020da85: movabs $0xfffff80000204df8,%rax <br \/>   0xfffff8000020da8f: callq *%rax<br \/>   \u2026.<br \/>  \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 0xe(<a href=\"http:\/\/wiki.osdev.org\/Exceptions#Page_Fault\">#PF<\/a>) \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0435\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff80000211508 \u043b\u0435\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0xfffff80000600000, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0435\u0449\u0435 1 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043e\u0431\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 call \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 0xfffff80000204df8. \u0422\u0430\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<br \/>   \u2026.<br \/>   0xfffff80000204e19: movabs $0xfffff8000020fda0,%rax <br \/>   0xfffff80000204e23: lea (%rdx,%rax,1),%rax <br \/>   0xfffff80000204e27: mov (%rax),%rdx <br \/>   0xfffff80000204e2a: mov %rdx,-0x50(%rbp) <br \/>   0xfffff80000204e2e: mov 0x8(%rax),%rdx <br \/>   0xfffff80000204e32: mov %rdx,-0x48(%rbp) <br \/>   0xfffff80000204e36: mov 0x10(%rax),%rax <br \/>   0xfffff80000204e3a: mov %rax,-0x40(%rbp) <br \/>   0xfffff80000204e3e: mov -0x50(%rbp),%rax <br \/>   0xfffff80000204e42: cmp $0x726574,%rax <br \/>   0xfffff80000204e48: je 0xfffff80000205418 <br \/>   0xfffff80000204e4e: cmp $0x726574,%rax <br \/>   0xfffff80000204e54: ja 0xfffff80000204ea4 <br \/>   0xfffff80000204e56: cmp $0x69667a,%rax <br \/>   0xfffff80000204e5c: je 0xfffff80000205067 <br \/>   0xfffff80000204e62: cmp $0x69667a,%rax <br \/>   0xfffff80000204e68: ja 0xfffff80000204e87 <br \/>   0xfffff80000204e6a: cmp $0x616464,%rax <br \/>   0xfffff80000204e70: je 0xfffff80000205225<br \/>   \u2026.<br \/>  \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 cmp\/je, \u043e\u0431\u0438\u043b\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a \u043a\u043e\u0434\u0435 \u043d\u0430 \u0421\u0438 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b \u0434\u043b\u0438\u043d\u043d\u044b\u0439 switch\/case, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 8\u043c\u0438 \u0431\u0430\u0439\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff8000020fda0 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a-\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u0440\u0430\u0442\u043d\u043e 24-\u043c. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 24 \u0431\u0430\u0439\u0442\u0430, \u0433\u0434\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 8 \u0431\u0430\u0439\u0442 \u2013 \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f 16 \u2013 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff8000020fda0 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201cdump memory vmcode.bin 0xfffff8000020fda0 0xfffff80000210da0\u201d \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0435\u0433\u043e \u0432 \u0445\u0435\u043a\u0441 \u044d\u0434\u0438\u0442\u043e\u0440\u0435 (\u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f Okteta). <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3ee\/808\/6f9\/3ee8086f91384661a138fa05496c5ba1.png\"\/><\/p>\n<p>  \u0412 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u043e\u0442\u0447\u0435\u0442\u043b\u0438\u0432\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 ASCII \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0421\u0440\u0435\u0434\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435, \u043a\u0430\u043a llac, tixe, bus, \u0447\u0442\u043e \u043d\u0430\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0438\u0445 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c\u0438. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043d\u0430 \u0421\u0438 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b, \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445, \u0445\u0440\u0430\u043d\u0438\u043c\u043e\u0435 \u0432 little-endian. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f r0, r1, \u2026 \u0438 \u0442. \u0434., \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<h4><b>\u0414\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u043a\u043e\u0434\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b!<\/b><\/h4>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0434\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0434\u043e \u043a\u043e\u0434\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u2014 \u0434\u0435\u043b\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0438. \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043d\u0435\u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043d\u0430\u043c\u0435\u043a\u0430\u044e\u0442 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0430 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0435 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0xfffff80000204df8. \u0412 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435 \u043a\u043e\u0434 VM \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">r3 = 5381; while (1) {    r1 = *(u8*)r0;    if (r1 == 0)       break;     r3 = r3 * 33 + r1; } \/\/ check DJB hash if (r3 != 0x40e1baa8ff648029) {    return 0; } r5 &lt;&lt; 64 + r3 = (u128)hexstr2val(r4) if (r5 - r3 != 0x2a60386296a57940) {    return 0; } r2 = r3 &gt;&gt; 32; r1 = (r3 &lt;&lt; 32) &gt;&gt; 32; if (r2 - r1 != 0x3394749a) {    return 0; } r2 = (r3 &lt;&lt; 32) &gt;&gt; 48; r1 = (r3 &lt;&lt; 48) &gt;&gt; 48; if (r2 - r1 != 0x465e) {    return 0; } return 1;\t\/\/ success <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 DJB \u0445\u044d\u0448\u0430 \u043e\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0434\u0443\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u043a\u043b\u044e\u0447.<\/p>\n<h4><b>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u043a\u043b\u044e\u0447\u0430<\/b><\/h4>\n<p>  \u041a\u043b\u044e\u0447 \u043d\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043d\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 4\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044e\u0449\u0435\u0439 \u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447.<\/p>\n<pre><code class=\"cpp\">int main(int argc, char **argv) {     unsigned long long d64 = 0x2a60386296a57940;     unsigned long long d32 = 0x3394749a;     unsigned long long d16 = 0x465e;     unsigned long long step = 0x1000100010001;      unsigned long long key_l = ((d32 &lt;&lt; 32) + (d16 &lt;&lt; 48)) + ((d16 &lt;&lt; 16) + 0);     unsigned long long key_h = key_l + d64;      std::stringstream key_ss;     unsigned int i = 0;     while (1)     {         key_ss &lt;&lt; std::hex &lt;&lt; key_h;         key_ss &lt;&lt; std::hex &lt;&lt; std::setw(16) &lt;&lt; std::setfill('0') &lt;&lt; key_l;          unsigned long long key_str_hash = djb2_hash(key_ss.str().c_str());         if (key_str_hash == 0x40e1baa8ff648029)         {             std::cout &lt;&lt; &quot;Success! &quot; &lt;&lt; i &lt;&lt; &quot;\\n&quot;;             std::cout &lt;&lt; &quot;res_key = '&quot; &lt;&lt; key_ss.str() &lt;&lt; &quot;'\\n&quot;;         }         key_h += step;         key_l += step;          i++;         key_ss.str(&quot;&quot;);     }     return 0; } <\/code><\/pre>\n<p>  P\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043e! \u0427\u0442\u043e\u0431\u044b \u0432\u043d\u0435\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u044f\u0441\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f, \u043d\u0438\u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/626\/fa0\/c50\/626fa0c503a748ef9f139b02f0701c4c.png\"\/><\/p>\n<p>  \u0426\u0438\u043a\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 VM \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 #PF, \u0437\u0430\u0442\u0435\u043c \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 VM, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 exit, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f longjmp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u0441 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e #PF. \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043b\u044e\u0447\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f VM, \u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c #PF, \u0438 \u0446\u0438\u043a\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<h4><b>\u0412\u043e\u043f\u0440\u043e\u0441 \u043a \u0425\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0430\u043c<\/b><\/h4>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435: \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u043c\u043f\u0430 \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 IDA, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043c\u043f \u043f\u0430\u043c\u044f\u0442\u0438 (\u0441\u0434\u0430\u043c\u043f\u0438\u0432, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435), \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0433\u0434\u0435 \u043a\u043e\u0434, \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0435\u043c\u043e- \u0438 \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 IDA \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 64\u0431\u0438\u0442\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>  \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u043e\u0431\u0438\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 radare2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e rasm \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u0438\u0434\u0430 \u201cmovabs $0xfffff800002114c0,%rax\u201d, \u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434(bin.laddr), \u0432\u044b\u0448\u0435 4Gb. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0425\u0430\u0431\u0440\u0430 \u043e\u043f\u0438\u0448\u0435\u0442, \u043a\u0430\u043a \u0432 radare2 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0434\u0430\u043c\u043f, \u0442\u043e \u044f \u0431\u0443\u0434\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d. \u0412 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u044f \u0432\u0441\u0435 \u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0441\u044f objdump, gdb \u0438 $EDITOR.<\/p>\n<h4><b>\u0427\u0435\u0433\u043e \u0436\u0434\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c NeoQUEST-2015?<\/b><\/h4>\n<p>  \u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u043e\u043d\u0441\u043a\u043e\u0439 \u043b\u0435\u0433\u0435\u043d\u0434\u044b \u0438 7 \u0437\u0430\u0434\u0430\u043d\u0438\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c 8 \u0447\u0430\u0441\u043e\u0432 (\u043d\u0430\u0447\u0430\u043b\u043e \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u2014 \u0432 10:00)! \u0417\u0430\u0434\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043d\u0430\u0432\u044b\u043a\u0430\u043c\u0438. \u0412 18:00 \u043c\u044b \u043f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433\u0438, \u0438 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u0437 \u2014 \u043f\u043e\u0435\u0437\u0434\u043a\u0443 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439, \u00ab\u0441\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u043e\u043c\u0443\u00bb \u0438 \u00ab\u0437\u043e\u043b\u043e\u0442\u043e\u043c\u0443\u00bb \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043a\u0440\u0443\u0442\u044b\u0435 \u043f\u0440\u0438\u0437\u044b. \u0414\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u041f\u0438\u0442\u0435\u0440\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e!     \t<\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/261081\/\"> http:\/\/habrahabr.ru\/post\/261081\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t<img decoding=\"async\" align=\"left\" src=\"https:\/\/habrastorage.org\/files\/a0e\/1d1\/28a\/a0e1d128aba04e2aaf1e25a1c97a941c.png\"\/><br \/>  \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 &quot;<a href=\"http:\/\/neoquest.ru\/timeline.php?year=2015\">\u043e\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438<\/a>&quot; NeoQUEST-2015, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u0437\u0430\u0432\u0442\u0440\u0430, 2 \u0438\u044e\u043b\u044f \u0432 11:00, \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435, \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c write-up \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043d\u0435\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f online-\u044d\u0442\u0430\u043f\u0430!<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0445\u043e\u0434 \u043d\u0430 \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439, \u0438 \u043c\u044b \u0436\u0434\u0451\u043c \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e! NeoQUEST \u2014 \u044d\u0442\u043e \u0448\u0430\u043d\u0441 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435, \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u00ab\u0445\u0430\u043a\u0435\u0440\u0441\u043a\u0438\u0435\u00bb \u043d\u0430\u0432\u044b\u043a\u0438, \u043f\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438, \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u043c \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043b\u0443\u0447\u0448\u0438\u0445 \u0445\u0430\u043a\u0435\u0440\u043e\u0432, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u044f! <\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u043c\u044b \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 NeoQUEST-2015 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/255629\/\">\u0442\u0443\u0442 <\/a>\u0438 <a href=\"http:\/\/neoquest.ru\/timeline.php?year=2015\">\u0442\u0430\u043c<\/a>. <\/p>\n<p>  \u0417\u0430\u0434\u0430\u043d\u0438\u0435 online-\u044d\u0442\u0430\u043f\u0430, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u00ab\u043d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442\u00bb, \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u043b\u0434\u0441\u043a\u0443\u043b\u044c\u043d\u044b\u043c: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0436\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0448\u043b\u0430 \u043e \u0434\u0430\u043c\u043f\u0435 \u0432\u0441\u0435\u043c\u0438 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e \u0444\u043b\u043e\u043f\u043f\u0438-\u0434\u0438\u0441\u043a\u0430! \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u043a\u0432\u0435\u0441\u0442\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0435\u0432\u0435\u0440\u0441\u043e\u043c \u0438 \u0441 QEMU \u2014 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c!  <\/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-260468","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/260468","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=260468"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/260468\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=260468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=260468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=260468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}