{"id":316785,"date":"2021-01-22T15:00:43","date_gmt":"2021-01-22T15:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=316785"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=316785","title":{"rendered":"\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b Twisted Metal 4 (PSX) \u0432 Ghidra. \u0427\u0430\u0441\u0442\u044c 1"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qm\/6c\/rs\/qm6crs3n65rvmp1bmvehaayzzcg.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442,<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438\u0433\u0440\u044b Twisted Metal 4 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 Playstation. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Ghidra.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e\u0431 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 Twisted Metal. \u0410 \u043a\u043e\u043c\u0443-\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c (\u043c\u043d\u0435 \u043d\u0435\u0442). \u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0433\u0440\u0430\u043b \u0432 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0432 \u0438\u0433\u0440\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u0431\u0430\u0433\u0438. \u0422\u0430\u043a \u0432\u043e\u0442, \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445. \u041f\u043e\u0435\u0445\u0430\u043b\u0438&#8230;<a name=\"habracut\"><\/a><\/p>\n<p>  <\/p>\n<h2 id=\"igrovye-formaty\">\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0440\u0430\u0437\u0431\u043e\u0440 \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043b\u043e\u0439\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 SCUS_945.60. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0432 \u043d\u0451\u043c, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430-\u0442\u043e \u0438 \u043d\u0435\u0442. \u0417\u043d\u0430\u0447\u0438\u0442, \u0432\u0441\u0451 \u0443\u043f\u0440\u044f\u0442\u0430\u043d\u043e \u043a\u0443\u0434\u0430-\u0442\u043e \u0435\u0449\u0451.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0438\u0441\u043a\u0435, \u043a\u0440\u043e\u043c\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b: IMG, MR, STR, TIM. \u0414\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0434\u043b\u044f PSX, \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0432\u0438\u0434\u0435\u043e-\u0441\u0442\u0440\u0438\u043c\u044b \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0410 \u0432\u043e\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u043d\u0430\u0434\u043e \u0431\u044b \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432 hex-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0444\u0430\u0439\u043b \u0438 \u0432\u0438\u0434\u0438\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/d2\/dr\/ro\/d2drroe4u-kz9ukjfybjitfvybu.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e &quot;\u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438&quot; \u0431\u0430\u0439\u0442, \u0444\u0430\u0439\u043b \u0447\u0435\u043c-\u0442\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d. \u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"zagruzka-scus_94560-v-ghidra\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 SCUS_945.60 \u0432 Ghidra<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 Sony Playstation 1 \u0432 Ghidra \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a, \u044f \u043f\u0438\u0441\u0430\u043b \u043e \u043d\u0451\u043c <a href=\"https:\/\/habr.com\/ru\/post\/448098\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0413\u0438\u0434\u0440\u0443, \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0437\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0444\u0430\u0439\u043b SCUS_945.60 \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0434\u0438\u0441\u043a\u0430 \u0441 \u0438\u0433\u0440\u043e\u0439.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/q6\/bu\/jx\/q6bujxhzlqawuigdko3etpljonu.png\"><\/p>\n<p>  <\/p>\n<p>\u0423\u0437\u043d\u0430\u0451\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f PsyQ 4.5.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ym\/3y\/j4\/ym3yj4j3d8ejhf5iiodrfnrxgsu.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0444\u0430\u0439\u043b\u0430, \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>main()<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2t\/ac\/7v\/2tac7vrmr0krmq9s5k1rmyykyey.png\"><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/b-\/su\/06\/b-su06cch08nxyuxkwhmv-nx_ko.png\"><\/p>\n<p>  <\/p>\n<p>\u042f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u2014 \u043f\u043e\u0445\u043e\u0436\u0435, \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0443 MR-\u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_800217e8\">FUN_800217e8<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_5\/5t\/tl\/_55ttlinf30nsw08mo8a6qme8hy.png\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u0432\u044b\u0437\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 <code>main()<\/code> \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0442\u0443\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0438\u043f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u2014 <code>char *<\/code> (\u0443 \u0413\u0438\u0434\u0440\u044b \u043f\u043e\u043d\u044f\u0442\u0438\u0439 <code>const<\/code>, <code>\u043d\u0435 const<\/code> \u043d\u0435\u0442), \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432 <code>mr_name<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8_\/e_\/lk\/8_e_lkpi9t3umaf_j7quwmbwqca.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">iVar1 = FUN_80021094(mr_name,&amp;local_8);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0439\u0434\u0451\u043c \u0432 \u043d\u0435\u0451:<\/p>\n<p>  <\/p>\n<h4 id=\"fun_80021094\">FUN_80021094<\/h4>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/d2\/hw\/m4\/d2hwm4oon0bdfpt5b_nzxi0gdr4.png\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0438\u043f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0438\u0434\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">FUN_80034644(auStack128,&amp;DAT_80057b84,mr_name);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u043d\u0435\u0451, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aa\/9l\/jd\/aa9ljduxbjqnds4oifkvq7hdves.png\"><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0413\u0438\u0434\u0440\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443, \u043d\u0443\u0436\u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0435\u0451 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0443 (<code>T<\/code>-&gt;<code>string<\/code>).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w7\/g8\/bl\/w7g8bl8rezqoewpvihvdiufkm_i.png\"><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tw\/g7\/lz\/twg7lze0szmsjdqikemk1rdbook.png\"><\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0438 \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u0410 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, <code>sprintf()<\/code>. \u0422\u0430\u043a \u0435\u0451 \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">sprintf(auStack128,&quot;%s;1&quot;,mr_name);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u0442 \u0432\u044b\u0437\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>sprintf()<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">FUN_800102c0(auStack128,auStack128);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u043c, \u0432\u044b\u0437\u044b\u0432\u0430\u044f <code>toupper()<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mv\/ix\/gx\/mvixgxtpbijsvps7wy7z-3gxy8s.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 <code>string_uppercase()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u2014 <code>FUN_80022210<\/code>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>  <\/p>\n<h4 id=\"fun_80022210\">FUN_80022210<\/h4>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s9\/vn\/ls\/s9vnlsusva_nmpm0c3oi73vayt8.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0435\u0451 \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0443 \u2014 <code>CdlLOC*<\/code>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0422\u0430\u043a \u0435\u0451 \u0438 \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u2014 <code>get_file_location()<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">undefined4 get_file_location(char *param_1,CdlLOC *param_2)<\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u0422\u0438\u043f <code>CdlLOC<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0432 PsyQ \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0447\u0430\u0441\u044b, \u043c\u0438\u043d\u0443\u0442\u044b, \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p><\/blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u0442\u0438\u043f\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>get_file_location()<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043e\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <code>P<\/code> (<em>Commit Params\/Return<\/em>) \u0432 C++-\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pd\/8e\/ip\/pd8eipxwjxlxs1tvynzse2qncnu.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ax\/vr\/zd\/axvrzdo2369ruhrwd7fec8pllkq.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FUN_80021094<\/code> \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0433\u0434\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432 <code>get_file_offset()<\/code>, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0438\u043f\u044b \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043a\u043b\u0430\u0432\u0438\u0448\u0430 <code>P<\/code>) \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0448\u0435 \u2014 \u043a <code>FUN_800217e8<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_800217e8-1\">FUN_800217e8<\/h3>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \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<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pu\/l0\/jw\/pul0jwp9idrdsdb276-scgteohu.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>FUN_80021690<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f &quot;\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b&quot; \u0444\u0430\u0439\u043b\u0430, \u0435\u0433\u043e \u0438\u043c\u044f, \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0417\u0430\u0439\u0434\u0451\u043c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c.<\/p>\n<p>  <\/p>\n<h4 id=\"fun_80021690\">FUN_80021690<\/h4>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hv\/as\/1c\/hvas1cexphgv9xrppsmxg8iik6e.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442, \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u0430, \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u0438 \u0442.\u043f. \u0414\u0435\u043b\u0430\u044e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u2014 <code>FUN_80017cf8<\/code> \u2014 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e \u0434\u0430\u043b\u0435\u0435. \u0410 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0442\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044f \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438 \u0443\u0436\u0430\u0441\u043d\u0443\u043b\u0441\u044f \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438! \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hc\/9w\/f4\/hc9wf4-74gynlwzqn2gmd0jqu1o.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0430, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0441\u043a\u0430. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432 <code>read_data_by_pos()<\/code>. \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u0448\u0435, \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>FUN_80021690<\/code> \u0432 <code>read_file_with_alloc()<\/code>. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c <code>P<\/code> \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_800217e8-2\">FUN_800217e8<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fi\/q8\/-l\/fiq8-lhxxbsmtiafon3y_3uvida.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u0441\u043d\u043e\u0432\u0430 \u043a \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0451 <code>read_file()<\/code>, \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a <code>offset<\/code>, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430, \u0438\u0431\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043d\u044f\u0442 \u0437\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 <code>return<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"main\">main<\/h2>\n<p>  <\/p>\n<p>\u0418 \u0432\u043e\u0442, \u043c\u044b \u0441\u043d\u043e\u0432\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438\u043c\u0435\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <code>MAIN.MR<\/code> \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/up\/2_\/bx\/up2_bxsf_oxiaeac0nlfltquuls.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FUN_80012bf0<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u0410 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043d\u043e\u0432\u0430 \u0438\u0434\u0451\u0442 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f (\u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430). \u0423\u0436\u0435 \u0438\u043c\u0435\u044f \u0432 \u044d\u0442\u043e\u043c \u043e\u043f\u044b\u0442, \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 &quot;<em>\/<\/em>&quot;. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 <code>FUN_80012bf0<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_80012bf0\">FUN_80012bf0<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sh\/fw\/gs\/shfwgsudnnk2o3xn23nr4z7tgqm.png\"><\/p>\n<p>  <\/p>\n<p>\u042f\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u0441\u043c\u043e\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u0442\u043e \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442, \u043d\u0435 \u0432\u043d\u0451\u0441. \u0417\u0430\u0439\u0434\u0451\u043c \u0432 <code>FUN_800128cc<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0441\u0443\u0434\u044f \u043f\u043e \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0443, \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0435\u0451.<\/p>\n<p>  <\/p>\n<h4 id=\"fun_800128cc\">FUN_800128cc<\/h4>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ag\/rx\/lc\/agrxlc20tk7s9kqtgwhpte8bzo0.png\"><\/p>\n<p>  <\/p>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0443 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u0438 \u0435\u0441\u0442\u044c. \u041d\u0430\u0436\u043c\u0451\u043c <code>P<\/code>. \u0412\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 <code>strcpy<\/code>, \u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0441 \u043d\u0435\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bb\/jm\/ss\/bbjmsstsmytd42f5dfxr2g4ernm.png\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0439\u0434\u0451\u043c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0438\u043f <code>char *<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">iVar1 = FUN_80012a24(param_1);<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fun_80012a24\">FUN_80012a24<\/h4>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hf\/wm\/88\/hfwm88lfm2m6imblxhgjrlhw44c.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u2014 <code>strcmp()<\/code>, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/og\/r4\/bp\/ogr4bpuadf5eyuwmcwng5aplcra.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u0442\u0440\u043e\u043a (<code>DAT_8005963c<\/code>), \u0438 \u0438\u0445 16 \u0448\u0442\u0443\u043a (\u0441\u0443\u0434\u044f \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u0446\u0438\u043a\u043b\u0430). \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0442\u0438\u043f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 <code>char*[16]<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>0x8005963C<\/code>, \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0442\u0438\u043f <code>char*<\/code> \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f (\u0447\u0435\u0440\u0435\u0437 <code>T<\/code>), \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u043c\u0451\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <code>[<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hj\/rf\/fo\/hjrffonkowkfmwlyu1pxb4fv2nk.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>FUN_80012a24<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 <code>find_prev_string_index()<\/code>. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0437\u0430\u0434.<\/p>\n<p>  <\/p>\n<h4 id=\"fun_800128cc-1\">FUN_800128cc<\/h4>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430. \u041e\u043f\u044b\u0442\u043d\u044b\u0439 \u0433\u043b\u0430\u0437 \u0441\u0440\u0430\u0437\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0434\u043b\u0438\u043d\u044b <code>strlen()<\/code>, \u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 (\u0435\u0449\u0451 \u043e\u0434\u0438\u043d <code>malloc()<\/code>?).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kc\/nl\/d0\/kcnld02o53uenobtrxftnybfkgk.png\"><\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2014 <code>FUN_8003d7a8<\/code>:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fa\/fc\/oy\/fafcoyrv-i86ppmi_cscqrgwcda.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0442\u0430\u043a \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e: &quot;<strong>Possible STRLEN.OBJ\/strlen<\/strong>&quot;. \u041f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443, \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b? \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0432\u0430:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0420\u0430\u043d\u0435\u0435 \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0430\u044f \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/li>\n<li>\u042d\u043d\u0442\u0440\u043e\u043f\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c <code>3.0<\/code>)<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u041d\u0443 \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (<code>FUN_80017cd8<\/code>) \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043e\u0431\u044a\u0451\u043c\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0438, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 <code>malloc()<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>malloc2()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e, \u0432\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FUN_800128cc<\/code> \u2014 \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 <code>strdup()<\/code> \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0432\u0435\u0440\u0445.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_80012bf0-1\">FUN_80012bf0<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tt\/ni\/bk\/ttnibkmlnifk0v55jtqlpzcxq2m.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">iVar2 = FUN_80012148(DAT_80056f38,rel_path);<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-2\/kb\/ik\/-2kbik9vvybph4aonnnlxaywohu.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0431\u044a\u0451\u043c\u043d\u043e, \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u0417\u0430\u043c\u0435\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 <code>strncpy()<\/code> \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0435\u043c \u043d\u0443\u0436\u043d\u043e. \u041d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Ghidra (<code>9.2<\/code>) \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">param_1 = FUN_800120d8(param_1,pcVar5);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0438 \u0442\u0443\u0434\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w8\/kp\/6n\/w8kp6n66w7_taxw7q4y4bs6mps8.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u0438\u043c \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u0437\u043e\u0432 <code>strcmp()<\/code> \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c (\u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0441\u0442\u0430\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u043e\u0441\u044c).<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0443 \u043d\u0430\u0441 \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0432\u0438\u0434\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439):<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/x9\/8f\/3q\/x98f3qbdyftbso45hpcs02c64ba.png\"><\/p>\n<p>  <\/p>\n<p>\u0423 Ghidra \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430: <code>Auto Create Structure (Shift+[)<\/code>. \u0416\u043c\u0451\u043c \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c. \u0422\u0430\u043a\u0438\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0443 \u043d\u0430\u0441 \u0434\u0432\u0430: <code>param_1<\/code> \u0438 <code>iVar2<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/c8\/6s\/la\/c86slabpcnnzsyd2msllkwhh_e4.png\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c: \u0432 <code>field_0x8<\/code> \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a, \u0432 <code>field_0xc<\/code> \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u0414\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0435 <code>field_0x10<\/code>. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0432\u0441\u0451 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0438\u043b\u0438 \u043e\u0434\u043d\u0430, \u043d\u043e \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043c\u043e\u0436\u0435\u043c \u0432\u0441\u0451 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u0448\u043b\u0438 \u0432 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442, \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 <code>param_2<\/code> \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 <code>param_1<\/code>. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 <code>get_item_by_string()<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cw\/o4\/jf\/cwo4jf6boqjukap4t4hrhj7qgke.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e <code>get_item_by_string()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441 \u0444\u0430\u043a\u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 <code>param_1<\/code>, \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0442\u0435 \u0434\u0432\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u0439. \u041f\u0440\u0430\u0432\u0438\u043c <code>astruct_1<\/code> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rh\/pj\/ek\/rhpjekdmtpk6yxvd5vpvdkisxro.png\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0442 \u0441 \u044d\u0442\u0438\u043c \u043a\u0443\u0441\u043a\u043e\u043c \u043a\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/df\/c8\/jq\/dfc8jqmtkyig4klnkdbxl3stx98.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u0432 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0438\u043f\u0430 <code>astruct_1<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0438\u0445 \u0442\u0438\u043f\u044b \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0443\u0435\u043c \u0432 <code>str_list1<\/code> \u0438 <code>str_list2<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u044d\u0442\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u043a\u0443\u0447\u0430 \u043a\u043e\u0434\u0430 \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u0432\u044b\u043c\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u043d\u043e \u0441 \u043d\u0435\u0439 \u043c\u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0442.\u043a. \u0443 \u0413\u0438\u0434\u0440\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u043b\u043e\u0445\u043e \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435. \u0412\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FUN_80012148<\/code> \u2014 \u043e\u043d\u0430 \u0438\u0449\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u0438\u043c\u0435\u0435\u0442\u0441\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430, \u0438\u043d\u0430\u0447\u0435 \u2014 <code>NULL<\/code>. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0432 <code>get_item_by_full_path()<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_80012bf0-2\">FUN_80012bf0<\/h3>\n<p>  <\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0432\u0435\u0440\u0445, \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FUN_80012bf0<\/code>:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/oe\/75\/qc\/oe75qctqz0vrkahy4umbqnb3peo.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043c\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0449\u0438\u043a\u0430 <code>MR<\/code>-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0442.\u043a. \u0443 \u043d\u0430\u0441 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 <code>short<\/code> (<code>mr_mem<\/code> \u043f\u043e\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>short*<\/code>), \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>FUN_80011f0c<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0438\u0434\u0443\u0449\u0438\u0435 \u0441\u043b\u0435\u0434\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">    if (*mr_mem == 0x67) {       FUN_80011f0c(paVar2,mr_mem + 2,iVar1);       uVar3 = 1;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f <code>mr_mem<\/code> \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 (\u0447\u0435\u0440\u0435\u0437 <code>Auto Create Structure<\/code>) \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0443 <code>FUN_80011f0c<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"fun_80011f0c\">FUN_80011f0c<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dy\/yr\/1c\/dyyr1c_rhxeflgbmjehaewimkec.png\"><\/p>\n<p>  <\/p>\n<p>\u042f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445, \u0437\u0434\u0435\u0441\u044c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>mr_sub_data<\/code> (\u044d\u0442\u043e \u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f <code>+0x04<\/code> \u2014 \u043d\u0435 <code>+0x02<\/code> \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>short*<\/code> \u2014 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 <code>mr_mem<\/code>, \u0442.\u0435. \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 MR-\u0444\u0430\u0439\u043b\u0430). \u0412\u043e \u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u0430, <code>mr_sub_data<\/code> \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 Ghidra \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c, \u0441\u043e\u0437\u0434\u0430\u0432 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0431\u0430\u0439\u0442\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u043b\u044e, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043a\u0430\u043a \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443):<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hd\/sp\/2r\/hdsp2rbufczlab4vzbsyyhgujbw.png\"><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yl\/7h\/mn\/yl7hmnmio5d0nkwzfqlsd2bcii4.png\"><\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0432 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <code>FUN_80011f0c<\/code>, \u0440\u0435\u0448\u0430\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0441 \u0442\u0435\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xi\/z_\/id\/xiz_idx8e-xpl201su1fkrnl29e.png\"><\/p>\n<p>  <\/p>\n<h4 id=\"fun_80011bd0\">FUN_80011bd0<\/h4>\n<p>  <\/p>\n<p>\u0412 \u0431\u043b\u043e\u043a\u0435 \u0441 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u0432 \u043d\u0435\u0451.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/i0\/ch\/xn\/i0chxnel_m1peotyuwxe8ymqoii.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u043e\u043b\u044f\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>astruct_1<\/code>, (\u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0442\u043e\u0433\u043e \u0436\u0435 \u0442\u0438\u043f\u0430. \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0438\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0441\u044f \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rn\/gk\/-t\/rngk-tqcpfnw43vys5lggralsjo.png\"><\/p>\n<p>  <\/p>\n<h4 id=\"fun_80011808\">FUN_80011808<\/h4>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441 \u0436\u0434\u0451\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e \u0438\u0437 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041a\u043e\u0434 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434 FUN_80011808<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/* WARNING: Globals starting with '_' overlap smaller symbols at the same address *\/  undefined4 FUN_80011808(astruct_1 *item,char *param_2,int param_3,undefined2 param_4,size_t param_5,size_t param_6,void *param_7,int index) {   dword dVar1;   int iVar2;   int iVar3;   undefined4 uVar4;   undefined *puVar5;   char *dst;   int iVar6;   dword dVar7;   void *pvVar8;   dword dVar9;   undefined local_res8;   char local_230 [512];   size_t local_30;   size_t local_2c;    iVar2 = strlen(param_2);   iVar6 = iVar2 + 1;   iVar3 = iVar6;   if (iVar6 &lt; 0) {     iVar3 = iVar2 + 4;   }   iVar3 = iVar6 + (iVar3 &gt;&gt; 2) * -4;   if (0 &lt; iVar3) {     iVar6 = (iVar2 + 5) - iVar3;   }   pvVar8 = (void *)0x0;   if (*(code **)(&amp;DAT_800595a0 + param_3 * 4) == (code *)0x0) {     if ((int)param_6 &lt; 1) {       puVar5 = (undefined *)malloc2(iVar6 + param_5 + 8);       FUN_80017e5c(puVar5 + iVar6 + 8,param_7,param_5);       dst = puVar5 + 8;     }     else {       local_2c = param_6;       puVar5 = (undefined *)malloc2(iVar6 + param_6 + 8);       FUN_8001441c(puVar5 + iVar6 + 8,&amp;local_2c,param_7,param_5);       dst = puVar5 + 8;     }   }   else {     local_230[0] = '\\0';     memset();     FUN_800127a4(_DAT_00000170,item,local_230);     iVar3 = strlen(local_230);     local_230[iVar3] = '\/';     local_230[iVar3 + 1] = '\\0';     strcat(local_230,param_2);     if (0 &lt; (int)param_6) {       local_30 = param_6;       pvVar8 = malloc(param_6);       FUN_8001441c(pvVar8,&amp;local_30,param_7,param_5);       param_5 = param_6;       param_7 = pvVar8;     }     uVar4 = FUN_80012aa0(index);     iVar3 = (**(code **)(&amp;DAT_800595a0 + param_3 * 4))(local_230,param_3,param_5,param_7,uVar4);     if (iVar3 == 1) {       if (pvVar8 == (void *)0x0) {         return 1;       }       FUN_80017d60(pvVar8);       return 1;     }     puVar5 = (undefined *)malloc2(iVar6 + param_5 + 8);     FUN_80017e5c(puVar5 + iVar6 + 8,param_7,param_5);     dst = puVar5 + 8;     if (pvVar8 != (void *)0x0) {       FUN_80017d60(pvVar8);       dst = puVar5 + 8;     }   }   strcpy(dst,param_2);   local_res8 = (undefined)param_3;   puVar5[1] = local_res8;   *(undefined2 *)(puVar5 + 2) = param_4;   *puVar5 = (undefined)index;   dVar9 = 0;   dVar1 = item-&gt;field_0x4;   if (item-&gt;field_0x4 == 0) {     item-&gt;field_0x4 = (dword)puVar5;   }   else {     do {       dVar7 = dVar1;       iVar3 = strcmp(param_2,(char *)(dVar7 + 8));       if (iVar3 == 0) {         *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(dVar7 + 4);         if (dVar9 == 0) {           item-&gt;field_0x4 = (dword)puVar5;         }         else {           *(undefined **)(dVar9 + 4) = puVar5;         }         *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(dVar7 + 4);         FUN_80017d60(dVar7);         return 0;       }       if (iVar3 &lt; 0) {         if (dVar9 == 0) {           item-&gt;field_0x4 = (dword)puVar5;         }         else {           *(undefined **)(dVar9 + 4) = puVar5;         }         *(dword *)(puVar5 + 4) = dVar7;         goto LAB_80011af0;       }       dVar1 = *(dword *)(dVar7 + 4);       dVar9 = dVar7;     } while (*(dword *)(dVar7 + 4) != 0);     *(undefined **)(dVar7 + 4) = puVar5;   }   *(undefined4 *)(puVar5 + 4) = 0; LAB_80011af0:   item-&gt;field_0x2 = item-&gt;field_0x2 + 1;   return 1; }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"konec-pervoy-chasti\">\u041a\u043e\u043d\u0435\u0446 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/h2>\n<p>  <\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u0442.\u043a. \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u0451\u043c\u043d\u044b\u0439, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 (\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0440\u0435\u0442\u044c\u0435\u0439) \u0447\u0430\u0441\u0442\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 MR-\u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/li>\n<li>\u0421\u0436\u0430\u0442\u0438\u0435 <code>zlib<\/code><\/li>\n<li>\u041f\u0430\u0440\u0441\u0435\u0440 MR-\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043d\u0430 Python<\/li>\n<li>\u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 PIC-\u043a\u043e\u0434\u0430 (<strong>Position Independent Code<\/strong>) \u0441 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u044f\u043c\u0438, \u0438\u043c\u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u0438 \u0431\u043b\u0435\u043a\u0434\u0436\u0435\u043a\u043e\u043c. \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e \u0432 MIPS \u0432\u0441\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435<\/li>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a MR-\u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043b\u044f Ghidra<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/505084\/\"> https:\/\/habr.com\/ru\/post\/505084\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qm\/6c\/rs\/qm6crs3n65rvmp1bmvehaayzzcg.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442,<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438\u0433\u0440\u044b Twisted Metal 4 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 Playstation. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Ghidra.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e\u0431 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 Twisted Metal. \u0410 \u043a\u043e\u043c\u0443-\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u043e\u0432\u0435\u043b\u043e\u0441\u044c \u0438 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c (\u043c\u043d\u0435 \u043d\u0435\u0442). \u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0433\u0440\u0430\u043b \u0432 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0432 \u0438\u0433\u0440\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u0431\u0430\u0433\u0438. \u0422\u0430\u043a \u0432\u043e\u0442, \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445. \u041f\u043e\u0435\u0445\u0430\u043b\u0438&#8230;<\/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-316785","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316785","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=316785"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316785\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}