{"id":344342,"date":"2023-01-23T15:01:04","date_gmt":"2023-01-23T15:01:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=344342"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=344342","title":{"rendered":"<span>1337ReverseEngineer&#8217;s VMAdventures 1 crackme<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438: \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044d\u0442\u043e 1337ReverseEngineer&#8217;s VMAdventures 1 <a href=\"https:\/\/crackmes.one\/crackme\/63bd7f5733c5d43ab4ecf3ad\" rel=\"noopener noreferrer nofollow\">https:\/\/crackmes.one\/crackme\/63bd7f5733c5d43ab4ecf3ad<\/a><\/p>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430: \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 &#171;Correct key!&#187;.<\/p>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0440\u043e\u043b\u044f<\/strong><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443 &#171;Correct key!&#187; \u0438 \u043a\u043e\u0434, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u0434 \u043d\u0438\u043c &#8212; \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f: eax \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c, \u0430 \u0432 edi &#8212; \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fbf\/d12\/8be\/fbfd128be5810c505328d14ea02ff32a.png\" width=\"378\" height=\"344\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fbf\/d12\/8be\/fbfd128be5810c505328d14ea02ff32a.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e08\/913\/d3d\/e08913d3d18d88d7efb53ea824186e15.png\" width=\"769\" height=\"309\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e08\/913\/d3d\/e08913d3d18d88d7efb53ea824186e15.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0440\u043e\u043a\u0430 byte_4032E0 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b: \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c \u043f\u0430\u0440\u043e\u043b\u044c, \u0430 \u0445\u0435\u0448.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c0\/5a1\/a43\/5c05a1a43f3bc341f210d5af3d5c4bb9.png\" width=\"926\" height=\"27\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c0\/5a1\/a43\/5c05a1a43f3bc341f210d5af3d5c4bb9.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 esi \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0430\u0440\u043e\u043b\u044f, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432 loc_401170 &#171;\u043f\u043e\u0440\u0442\u0438\u0442&#187; \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/p>\n<p><strong>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430<\/strong><\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u043c: \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u0442\u0440\u043e\u043a\u0438 .rdata:004032D0 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 5 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u0430\u0439\u0442\u043e\u0432: 0x0, 0x1, 0x2, 0x3, 0x4.\u00a0 \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b 0, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u044b 1-4 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0430\u0440\u043e\u043b\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c: \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<p><strong>\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u043e\u043b\u044f<\/strong><\/p>\n<p>\u0418\u0437\u0443\u0447\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b.\u00a0<br \/><strong>0x1<\/strong> \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434, \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 64 \u0431\u0430\u0439\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 XOR \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f 16-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u0430 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 XOR 54h. \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f &#8212; 32 \u0438 XOR \u043f\u043e 64-\u0431\u043b\u043e\u043a\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 XOR,\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: A XOR B XOR B = A.<br \/><strong>0x2<\/strong> \u0422\u043e\u0442 \u0436\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0447\u0442\u043e \u0438 \u0443 0x1, \u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430: \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 XOR 24h.<br \/><strong>0x3<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u0432\u043b\u0435\u0432\u043e \u043d\u0430 2 \u0431\u0438\u0442\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#8212; \u0441\u0434\u0432\u0438\u0433 \u0432\u043f\u0440\u0430\u0432\u043e.<br \/><strong>0x4<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0441 0xEB. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#8212; \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f5b\/557\/d6d\/f5b557d6d72dbf8914bb3c8f50ab74d8.png\" width=\"3042\" height=\"2076\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f5b\/557\/d6d\/f5b557d6d72dbf8914bb3c8f50ab74d8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0430\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u0437 32-\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0430\u0434\u0438\u043c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 loc_401170 \u0448\u0438\u0444\u0440 \u043f\u0430\u0440\u043e\u043b\u044f \u0438\u0437 .rdata:004032E0<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0438\u043c \u043a\u043e\u0434 loc_401170, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438: <\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0432 case 3 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u0434\u0432\u0438\u0433\u0430 ROL \u043d\u0430 ROR <\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0432 case 4 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c7b\/a58\/6df\/c7ba586df75a23f7ce172c82e2580f87.png\" width=\"752\" height=\"515\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c7b\/a58\/6df\/c7ba586df75a23f7ce172c82e2580f87.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043a\u043e\u0434 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<pre><code class=\"cpp\">#include &lt;bit> #include &lt;vector> #include &lt;iostream> #include &lt;string>  using namespace std; using BytesVector = vector&lt;uint8_t>;  BytesVector code{0x01, 0x03, 0x04, 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01, 0x03, 0x02, 0x03, 0x04, 0x02, 0x03};  void xor1(BytesVector&amp; key) {     for (auto &amp;c: key) c ^= 0x54; }  void xor2(BytesVector&amp; key) {     for (auto &amp;c: key) c ^= 0x24; }  void rol2(BytesVector&amp; key) {     for (auto &amp;c: key) c = rotl(c, 2); }  void add(BytesVector&amp; key) {     for (auto &amp;c: key) c += 0xEB; }  void ror2(BytesVector&amp; key) {     for (auto &amp;c: key) c = rotr(c, 2); }  void sub(BytesVector&amp; key) {     for (auto &amp;c: key) c -= 0xEB; }   enum Opcode {     XOR1 = 0x1,     XOR2,     ROL,     ADD, ROR, SUB };  void exec(const BytesVector&amp; code, BytesVector&amp; key) {     for (auto i: code) {         switch(i) {             case XOR1:                 xor1(key);                 break;             case XOR2:                 xor2(key);                 break;             case ROL:                 rol2(key);                 break;             case ADD:                 add(key);                 break; case ROR: ror2(key); break; case SUB: sub(key); break;         }     } }  BytesVector explode(const string&amp; s) {     BytesVector result;     for (char c: s) {         result.push_back(static_cast&lt;uint8_t>(c));     }      return result; }  void encrypt(BytesVector&amp; text) {     exec(code, text); }  void reverseBytecode(BytesVector&amp; code) {         for (uint8_t&amp; op: code) {         switch(op) {             case ROL:                 op = ROR;                 break;             case ADD:                 op = SUB;                 break;             case ROR:                 op = ROL;                 break;             case SUB:                 op = ADD;                 break;         }     } }  void decrypt(BytesVector&amp; text) {     BytesVector rev{code.rbegin(), code.rend()};     reverseBytecode(rev);     exec(rev, text); }  int main() {     BytesVector magic{0xBD, 0x35, 0xA9, 0xA1, 0xD1, 0xE1, 0xD9, 0x35,                        0x31, 0x01, 0x39, 0xD9, 0xAA, 0x95, 0x01, 0xAA,                        0xFD, 0xB9, 0x28, 0xD5, 0x7C, 0xD9, 0x1D, 0x95,                        0x99, 0xCD, 0xD9, 0xF1, 0xAA, 0xD2, 0xEE, 0xF9};      string password;     cout &lt;&lt; \"Enter password: \"s;     cin >> password;     cout &lt;&lt; endl;          BytesVector key = explode(password);     encrypt(key); cout &lt;&lt; \"Encrypted: \"s;     for (auto k: key) {         printf(\"%X \", k);     }          decrypt(key);     cout &lt;&lt; \"\\nDecrypted: \"s; for (auto k: key) {         printf(\"%c\", k);     }          decrypt(magic);     cout &lt;&lt; \"\\nTOP SECRET: \"s;      for(auto b: magic) {          printf(\"%c\", b);     }      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/712290\/\"> https:\/\/habr.com\/ru\/post\/712290\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438: \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044d\u0442\u043e 1337ReverseEngineer&#8217;s VMAdventures 1 <a href=\"https:\/\/crackmes.one\/crackme\/63bd7f5733c5d43ab4ecf3ad\" rel=\"noopener noreferrer nofollow\">https:\/\/crackmes.one\/crackme\/63bd7f5733c5d43ab4ecf3ad<\/a><\/p>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430: \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 &#171;Correct key!&#187;.<\/p>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0440\u043e\u043b\u044f<\/strong><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443 &#171;Correct key!&#187; \u0438 \u043a\u043e\u0434, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u0434 \u043d\u0438\u043c &#8212; \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044f: eax \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c, \u0430 \u0432 edi &#8212; \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0440\u043e\u043a\u0430 byte_4032E0 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b: \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c \u043f\u0430\u0440\u043e\u043b\u044c, \u0430 \u0445\u0435\u0448.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 esi \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0430\u0440\u043e\u043b\u044f, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432 loc_401170 &#171;\u043f\u043e\u0440\u0442\u0438\u0442&#187; \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/p>\n<p><strong>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430<\/strong><\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u043c: \u0446\u0438\u043a\u043b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u0442\u0440\u043e\u043a\u0438 .rdata:004032D0 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 5 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u0430\u0439\u0442\u043e\u0432: 0x0, 0x1, 0x2, 0x3, 0x4.\u00a0 \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b 0, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u043a\u043e\u043c\u0430\u043d\u0434\u044b 1-4 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0430\u0440\u043e\u043b\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c: \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<p><strong>\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u043e\u043b\u044f<\/strong><\/p>\n<p>\u0418\u0437\u0443\u0447\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b.\u00a0<br \/><strong>0x1<\/strong> \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434, \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 64 \u0431\u0430\u0439\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 XOR \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f 16-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u0430 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 XOR 54h. \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f &#8212; 32 \u0438 XOR \u043f\u043e 64-\u0431\u043b\u043e\u043a\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 XOR,\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: A XOR B XOR B = A.<br \/><strong>0x2<\/strong> \u0422\u043e\u0442 \u0436\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0447\u0442\u043e \u0438 \u0443 0x1, \u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430: \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 XOR 24h.<br \/><strong>0x3<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u0432\u043b\u0435\u0432\u043e \u043d\u0430 2 \u0431\u0438\u0442\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#8212; \u0441\u0434\u0432\u0438\u0433 \u0432\u043f\u0440\u0430\u0432\u043e.<br \/><strong>0x4<\/strong> \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0441 0xEB. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#8212; \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0430\u043c\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u0437 32-\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0430\u0434\u0438\u043c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 loc_401170 \u0448\u0438\u0444\u0440 \u043f\u0430\u0440\u043e\u043b\u044f \u0438\u0437 .rdata:004032E0<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0438\u043c \u043a\u043e\u0434 loc_401170, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438: <\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0432 case 3 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u0434\u0432\u0438\u0433\u0430 ROL \u043d\u0430 ROR <\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0432 case 4 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043a\u043e\u0434 \u0434\u0435\u0448\u0438\u0444\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<pre><code class=\"cpp\">#include &lt;bit> #include &lt;vector> #include &lt;iostream> #include &lt;string>  using namespace std; using BytesVector = vector&lt;uint8_t>;  BytesVector code{0x01, 0x03, 0x04, 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01, 0x03, 0x02, 0x03, 0x04, 0x02, 0x03};  void xor1(BytesVector&amp; key) {     for (auto &amp;c: key) c ^= 0x54; }  void xor2(BytesVector&amp; key) {     for (auto &amp;c: key) c ^= 0x24; }  void rol2(BytesVector&amp; key) {     for (auto &amp;c: key) c = rotl(c, 2); }  void add(BytesVector&amp; key) {     for (auto &amp;c: key) c += 0xEB; }  void ror2(BytesVector&amp; key) {     for (auto &amp;c: key) c = rotr(c, 2); }  void sub(BytesVector&amp; key) {     for (auto &amp;c: key) c -= 0xEB; }   enum Opcode {     XOR1 = 0x1,     XOR2,     ROL,     ADD, ROR, SUB };  void exec(const BytesVector&amp; code, BytesVector&amp; key) {     for (auto i: code) {         switch(i) {             case XOR1:                 xor1(key);                 break;             case XOR2:                 xor2(key);                 break;             case ROL:                 rol2(key);                 break;             case ADD:                 add(key);                 break; case ROR: ror2(key); break; case SUB: sub(key); break;         }     } }  BytesVector explode(const string&amp; s) {     BytesVector result;     for (char c: s) {         result.push_back(static_cast&lt;uint8_t>(c));     }      return result; }  void encrypt(BytesVector&amp; text) {     exec(code, text); }  void reverseBytecode(BytesVector&amp; code) {         for (uint8_t&amp; op: code) {         switch(op) {             case ROL:                 op = ROR;                 break;             case ADD:                 op = SUB;                 break;             case ROR:                 op = ROL;                 break;             case SUB:                 op = ADD;                 break;         }     } }  void decrypt(BytesVector&amp; text) {     BytesVector rev{code.rbegin(), code.rend()};     reverseBytecode(rev);     exec(rev, text); }  int main() {     BytesVector magic{0xBD, 0x35, 0xA9, 0xA1, 0xD1, 0xE1, 0xD9, 0x35,                        0x31, 0x01, 0x39, 0xD9, 0xAA, 0x95, 0x01, 0xAA,                        0xFD, 0xB9, 0x28, 0xD5, 0x7C, 0xD9, 0x1D, 0x95,                        0x99, 0xCD, 0xD9, 0xF1, 0xAA, 0xD2, 0xEE, 0xF9};      string password;     cout &lt;&lt; \"Enter password: \"s;     cin >> password;     cout &lt;&lt; endl;          BytesVector key = explode(password);     encrypt(key); cout &lt;&lt; \"Encrypted: \"s;     for (auto k: key) {         printf(\"%X \", k);     }          decrypt(key);     cout &lt;&lt; \"\\nDecrypted: \"s; for (auto k: key) {         printf(\"%c\", k);     }          decrypt(magic);     cout &lt;&lt; \"\\nTOP SECRET: \"s;      for(auto b: magic) {          printf(\"%c\", b);     }      return 0; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/712290\/\"> https:\/\/habr.com\/ru\/post\/712290\/<\/a><br \/><\/br><\/br><\/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-344342","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344342","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=344342"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344342\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}