{"id":343736,"date":"2023-01-10T09:01:58","date_gmt":"2023-01-10T09:01:58","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=343736"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=343736","title":{"rendered":"<span>\u0417\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u043f\u0440\u0438 \u0440\u0435\u0441\u043f\u0430\u0432\u043d\u0435 \u0438\u0433\u0440\u043e\u043a\u0430<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0418\u0433\u0440\u0430\u044f \u0432 Unreal Tournament (ut99) \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u0442\u0438\u043a\u0443 &#171;\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0430 \u0432 \u0437\u0430\u0441\u0430\u0434\u0435&#187;, \u0442\u0430\u043a\u0438\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 camper.<\/p>\n<p>\u042f \u043c\u0438\u0440\u043d\u043e c\u0442\u043e\u044e \u0437\u0430 \u044f\u0449\u0438\u043a\u043e\u043c \u0438 \u0441\u043b\u0443\u0448\u0430\u044e \u043c\u0443\u0437\u044b\u043a\u0443.<\/p>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b &#171;\u0440\u0435\u0441\u043f\u0430\u0432\u043d\u0430&#187; (\u0432\u043e\u0441\u043a\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0430).<br \/>\u042f \u0433\u043e\u0432\u043e\u0440\u044e: &#8212; \u041f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c1\/2e4\/1d9\/5c12e41d98f80133957458457a7c577e.png\" width=\"640\" height=\"400\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c1\/2e4\/1d9\/5c12e41d98f80133957458457a7c577e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b \u044f \u0441\u043b\u0443\u0448\u0430\u044e \u043c\u0443\u0437\u044b\u043a\u0443. \u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u0432 (\u0432 \u0438\u0433\u0440\u0435) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435, \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0437\u0432\u0443\u043a respawn&#8217;a \u0441\u043b\u044b\u0448\u0435\u043d \u043d\u0435\u043e\u0442\u0447\u0435\u0442\u043b\u0438\u0432\u043e. \u042f \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f. \u041d\u0435\u043b\u044c\u0437\u044f-\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e-\u0442\u043e \u0432 \u0432\u0438\u0434\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430?<\/p>\n<p>\u0417\u0430\u0440\u043e\u0434\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u0438\u0434\u0435\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u043b\u0430\u0441\u044c. \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437.<\/p>\n<p>\u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u043d.<\/p>\n<ol>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044f UnrealTournament.exe \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u0430\u0442\u0447\u0438\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0432\u043e\u0441\u043a\u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430 &#8212; \u043c\u0438\u0433\u043d\u0443\u0442\u044c \u0434\u0438\u043e\u0434\u043e\u043c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 Unreal Tournament, \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 System \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0438 dll-\u043c\u043e\u0434\u0443\u043b\u0438.<br \/>\u042f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u043c\u043e\u0434\u0443\u043b\u044c Galaxy.dll, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0437\u0432\u0443\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dba\/df2\/f19\/dbadf2f19ab560ae029f143fdbedd092.png\" width=\"914\" height=\"633\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dba\/df2\/f19\/dbadf2f19ab560ae029f143fdbedd092.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0431\u0440\u043e\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger, \u043d\u0430 \u042f\u041f \u0421 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439.<br \/> \u0412 \u0438\u0442\u043e\u0433\u0435 &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u0430 \u0432 \u0448\u0435\u043b\u043b-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d.<\/p>\n<p>\u041a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 Trigger?<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ESI \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x106720F4, \u0437\u043d\u0430\u0447\u0438\u0442 &#8212; \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 EDI, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: 0x412, 0x426, 0x44A, 0x44C, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<pre><code class=\"cpp\">void Trigger() { _asm cmp esi, 0x106720F4 _asm je NEXT _asm jmp BACK  NEXT: _asm cmp edi, 0x412 _asm je FOUND  _asm cmp edi, 0x426 _asm je FOUND  _asm cmp edi, 0x44A _asm je FOUND  _asm cmp edi, 0x44C _asm je FOUND  _asm cmp edi, 0x44D _asm je FOUND  _asm cmp edi, 0x446 _asm je FOUND  _asm cmp edi, 0x44E _asm je FOUND  _asm cmp edi, 0x44F _asm je FOUND  _asm cmp edi, 0x448 _asm je FOUND  _asm cmp edi, 0x450 _asm je FOUND  _asm cmp edi, 0xC8F _asm je FOUND  _asm jmp BACK  FOUND: \/\/_asm mov [g_found], 1 BACK: \/\/_asm jmp } <\/code><\/pre>\n<p>\u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e, Trigger \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 (\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430).<\/p>\n<p>\u041f\u043b\u0430\u043d \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438.<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<\/li>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e hex-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Galaxy.dll.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 Ida (\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440) &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 (\u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438) \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 Galaxy.dll (\u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c) \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430.<br \/> \u0412 Ida \u044f \u0437\u0430\u0434\u0430\u043b \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e-\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 &#171;align&#187; (\u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0434\u0432\u043e\u0439\u043a\u0443) (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl+T).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/26e\/950\/e3b\/26e950e3b540e728fc68f82f1d40f1da.png\" width=\"906\" height=\"506\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26e\/950\/e3b\/26e950e3b540e728fc68f82f1d40f1da.png\"\/><figcaption><\/figcaption><\/figure>\n<p>Align &#8212; \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b (\u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b).<br \/> \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<p>\u041f\u043e\u0438\u0441\u043a \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u043b\u0433\u043e \u0436\u0434\u0430\u0442\u044c, \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 (2000h) 8192 \u0431\u0430\u0439\u0442!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a0d\/1d5\/ca9\/a0d1d5ca91c40fd4eced9568fe70937b.png\" width=\"720\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a0d\/1d5\/ca9\/a0d1d5ca91c40fd4eced9568fe70937b.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423\u0437\u043d\u0430\u0435\u043c \u0443 Ida &#8212; \u0433\u0434\u0435, \u0432 \u0444\u0430\u0439\u043b\u0435 Galaxy.dll &#8212; \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 (\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435) \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e<br \/> \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f?<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e.<br \/> \u0412 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e &#171;Jmp&#187; \u0432\u044b\u0431\u0440\u0430\u0442\u044c &#171;Jmp to file offset&#8230;&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/793\/e95\/508\/793e95508a8f65545f041f0ffcfd34b2.png\" width=\"720\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/793\/e95\/508\/793e95508a8f65545f041f0ffcfd34b2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441, \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0438\u043a.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b Galaxy.dll \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 (\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u0430\u043a \u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 QView &#8212; \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043f\u0430\u0440\u0443 \u0440\u0430\u0437 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;Enter&#187; &#8212; \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430.<br \/> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;F2&#187; \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434.<br \/> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;F5&#187; \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441: 361BA \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;Enter&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cbe\/743\/b31\/cbe743b31b41c7fd0f618d81c3e03cbf.png\" width=\"800\" height=\"542\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cbe\/743\/b31\/cbe743b31b41c7fd0f618d81c3e03cbf.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b \u043e\u043a\u0430\u0436\u0435\u0442\u0435\u0441\u044c \u0432 \u043c\u0435\u0441\u0442\u0435 \u0433\u0434\u0435 \u043c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/636\/26b\/077\/63626b077bfa79e708fa89492f008d53.png\" width=\"649\" height=\"328\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/636\/26b\/077\/63626b077bfa79e708fa89492f008d53.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434 (\u0432 Qview \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 &#171;Tab&#187;):<\/p>\n<ol>\n<li>\n<p>81FEF4206710 cmp esi, 106720F4<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0432\u0435\u0434\u0435\u043d \u0432\u0435\u0441\u044c \u043a\u043e\u0434 &#8212; \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0442\u043e\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 (\u0442.\u0435. \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e &#8212; \u0432\u0432\u043e\u0434\u0438\u043c nop (\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c) \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b; \u044d\u0442\u043e \u043a\u0430\u043a \u043d\u0430\u0431\u0440\u043e\u0441\u043e\u043a &#8212; \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434, \u043f\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d,<br \/> \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c &#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>81FF12040000 cmp edi, 00000412<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF26040000 cmp edi, 00000426<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4A040000 cmp edi, 0000044A<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4C040000 cmp edi, 0000044C<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4D040000 cmp edi, 0000044D<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF46040000 cmp edi, 00000446<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4E040000 cmp edi, 0000044E<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4F040000 cmp edi, 0000044F<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF48040000 cmp edi, 00000448<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF50040000 cmp edi, 00000450<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF8F0C0000 cmp edi, 00000C8F<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>FF15B4BE6710 call   dword ptr [1067BEB4]<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430, \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0438\u0437 \u043c\u0435\u0441\u0442\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<ol start=\"26\">\n<li>\n<p>E9A1B5FDFF jmp 000117C8<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<ol start=\"27\">\n<li>\n<p>893DE0F06510 mov dword ptr [1065F0E0], edi<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &#171;EDI&#187;<\/p>\n<\/li>\n<\/ul>\n<ol start=\"28\">\n<li>\n<p>EBED jmp 0003621C<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043f\u0443\u043d\u043a\u0442 #25<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b.<br \/> \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/75f\/d8f\/432\/75fd8f432e7c2d3ac2167b733707f5d2.png\" width=\"648\" height=\"604\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75f\/d8f\/432\/75fd8f432e7c2d3ac2167b733707f5d2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Trigger.<\/p>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 &#171;Qview&#187; \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;F5&#187;, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 117C2 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Enter&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/75b\/355\/44a\/75b35544a6119c8b6380e505872ae80b.png\" width=\"648\" height=\"324\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75b\/355\/44a\/75b35544a6119c8b6380e505872ae80b.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435:<br \/> a) E9F3490200 jmp 000361BA<br \/> b) 90 nop<\/p>\n<p>\u0412\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 Galaxy.dll \u0432 Ida (\u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0435 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e\u0433\u043e).<br \/> \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d &#8212; \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Options&#187; &#8212; &#171;General&#187; &#8212; &#171;Reanalyze program&#187;).<br \/> \u0422\u0430\u043a\u0436\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c &#171;Galaxy.dll&#187; \u0441\u043d\u043e\u0432\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/be5\/65d\/0bb\/be565d0bbbe5147f028905cd740e4f91.png\" width=\"780\" height=\"505\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be5\/65d\/0bb\/be565d0bbbe5147f028905cd740e4f91.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0434\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Trigger, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 Ida \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;G&#187;, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 106361BA.<\/p>\n<p>C\u043c\u043e\u0442\u0440\u0438\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93c\/e2e\/2c8\/93ce2e2c89df085d9c84c9f0475c40f3.png\" width=\"740\" height=\"491\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/93c\/e2e\/2c8\/93ce2e2c89df085d9c84c9f0475c40f3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 &#171;; CODE XREF: sub_10610C00+BC2&#187; \u0438 \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u043e\u043c\u043d\u0438\u0442\u0435 &#8212; \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0430\u0434\u0440\u0435\u0441 106117C2.<\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Debugger&#187; \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a &#171;Local Win32 Debugger&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/614\/bd1\/a81\/614bd1a8192d96f7cbee79936f1dae49.png\" width=\"720\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/614\/bd1\/a81\/614bd1a8192d96f7cbee79936f1dae49.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (BPX) \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f &#171;jmp&#187;).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/df3\/522\/817\/df3522817809f131778a0c4ac6aa0134.png\" width=\"720\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/df3\/522\/817\/df3522817809f131778a0c4ac6aa0134.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Debugger&#187; &#171;Start process&#187;, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 (\u0447\u0435\u043a\u0431\u043e\u043a\u0441):<br \/> &#171;Don&#8217;t display this message again&#187; \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Yes&#187;.<br \/> Ida \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 &#171;UnrealTournamet.exe&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4ed\/4c5\/16b\/4ed4c516b9f0e8b6c0ec8d946210c4d3.png\" width=\"720\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ed\/4c5\/16b\/4ed4c516b9f0e8b6c0ec8d946210c4d3.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (BPX).<br \/> \u041f\u0440\u043e\u0439\u0434\u0438\u0442\u0435 \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e (\u043d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0443 F8).<br \/> \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432 \u0441\u0431\u043e\u0440\u0435.<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ WinMain.cpp \/\/ \/\/ \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 UT99 \u0437\u0432\u0443\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442: Galaxy.GalaxyAudioSubsystem. \/\/ \u0415\u0441\u043b\u0438, \u0447\u0442\u043e-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a - \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0444\u0430\u0439\u043b UnrealTournament.ini, \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e-\u043b\u0438: AudioDevice=Galaxy.GalaxyAudioSubsystem  #include &lt;windows.h> #include &lt;winioctl.h>  char* GAppname=\"Resp2A Trigger UT99'\"; char* GAppname_UT=\"Unreal Tournament\";  void mb(char* s); void OnKbdLeds(); void ToggleLed(BOOL toggle, int led); char* appGetOpenFileName();  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { CreateMutex(NULL,0,GAppname); BOOL AlreadyRunning=(ERROR_ALREADY_EXISTS==GetLastError()); if(AlreadyRunning) return 1;  \/\/ Load config HKEY key; RegCreateKey(HKEY_CURRENT_USER, \"Software\\\\MyCompany\\\\MyAppname\",&amp;key);  DWORD dwLen=MAX_PATH; static char CommandLine[MAX_PATH]; RegQueryValueEx(key,\"CommandLine\",NULL,NULL,(BYTE*)CommandLine,&amp;dwLen);  if(!CommandLine[0]) { lstrcpy(CommandLine,appGetOpenFileName()); if(!CommandLine[0]) { RegCloseKey(key); return 0; } }  char CurrentDirectory[MAX_PATH]; lstrcpy(CurrentDirectory,CommandLine);  int i; for(i=lstrlen(CurrentDirectory)-1;i>0;--i) { if('\\\\'==CurrentDirectory[i-1] || '\/\/'==CurrentDirectory[i-1]) break; } CurrentDirectory[i]=0;  PROCESS_INFORMATION pi; STARTUPINFO si; memset(&amp;si,0,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_FORCEOFFFEEDBACK;  char cmdLine[512]; wsprintf(cmdLine,\"%s\",CommandLine); \/\/wsprintf(cmdLine,\"%s 195.98.73.166:6666\",CommandLine);  CreateProcess(NULL, cmdLine,NULL,NULL,0,0,NULL,CurrentDirectory,&amp;si,&amp;pi); if(!pi.hProcess) { CommandLine[0]=0; RegSetValueEx(key,\"CommandLine\",NULL,REG_SZ,(BYTE*)(CommandLine),MAX_PATH); RegCloseKey(key);  char buf[512]; wsprintf(buf,\"Failed CreateProcess\\n\\n\\\"%s\\\"\",CommandLine); mb(buf); } CloseHandle(pi.hThread);  \/\/ Save config RegSetValueEx(key,\"CommandLine\",NULL,REG_SZ,(BYTE*)(CommandLine),MAX_PATH); RegCloseKey(key);  HWND hWnd=FindWindow(NULL,GAppname_UT); while(!hWnd) { Sleep(1000); hWnd=FindWindow(NULL,GAppname_UT); }  \/*------------------------------------------------------- The trigger -------------------------------------------------------*\/ DWORD addrTrigger=0x106361BA;  unsigned char codeTrigger[]= \"\\x81\\xFE\\xF4\\x20\\x67\\x10\\x74\\x02\\xEB\\x58\\x81\\xFF\\x12\\x04\\x00\\x00\" \"\\x74\\x5B\\x81\\xFF\\x26\\x04\\x00\\x00\\x74\\x53\\x81\\xFF\\x4A\\x04\\x00\\x00\" \"\\x74\\x4B\\x81\\xFF\\x4C\\x04\\x00\\x00\\x74\\x43\\x81\\xFF\\x4D\\x04\\x00\\x00\" \"\\x74\\x3B\\x81\\xFF\\x46\\x04\\x00\\x00\\x74\\x33\\x81\\xFF\\x4E\\x04\\x00\\x00\" \"\\x74\\x2B\\x81\\xFF\\x4F\\x04\\x00\\x00\\x74\\x23\\x81\\xFF\\x48\\x04\\x00\\x00\" \"\\x74\\x1B\\x81\\xFF\\x50\\x04\\x00\\x00\\x74\\x13\\x81\\xFF\\x8F\\x0C\\x00\\x00\" \"\\x74\\x0B\\xFF\\x15\\xB4\\xBE\\x67\\x10\\xE9\\xA1\\xB5\\xFD\\xFF\\x89\\x3D\\xE0\" \"\\xF0\\x65\\x10\\xEB\\xED\";  DWORD codeTrigger_Len=117;  \/*------------------------------------------------------- The patch -------------------------------------------------------*\/ DWORD addrPatch=0x106117C2;  \/\/ E9F349020090 unsigned char codePatch[]=\"\\xE9\\xF3\\x49\\x02\\x00\\x90\"; DWORD codePatch_Len=6;  DWORD dwMagic=0; BYTE value[128];  BOOL bRet=FALSE; int n=14; \/\/ Wait init \"UT\" 14 seconds  while(n) { ReadProcessMemory(pi.hProcess, (LPVOID)addrPatch,&amp;dwMagic,sizeof(dwMagic),NULL); if(dwMagic) { if(0xBEB415FF==dwMagic) { memcpy(&amp;value,codeTrigger,codeTrigger_Len); bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrTrigger,&amp;value,codeTrigger_Len,NULL);  if(bRet) { memcpy(&amp;value,codePatch,codePatch_Len); bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrPatch,&amp;value,codePatch_Len,NULL); } } break;  } \/\/ End \"if dwMagic\"  --n; Sleep(1000);  } \/\/ End \"while\"  if(!bRet) mb(\"Failed patch\");  DWORD addrFound=0x1065F0E0; DWORD dwFound=0;  hWnd=FindWindow(NULL,GAppname_UT);  while(hWnd) { ReadProcessMemory(pi.hProcess, (LPVOID)addrFound,&amp;dwFound,sizeof(dwFound),NULL); if(dwFound) { switch(dwFound) { case 0x412: dwFound=0xCDC31337; break;  case 0x426: dwFound=0xCDC31337; break;  case 0x44A: dwFound=0xCDC31337; break;  case 0x44C: dwFound=0xCDC31337; break;  case 0x44D: dwFound=0xCDC31337; break;  case 0x446: dwFound=0xCDC31337; break;  case 0x44E: dwFound=0xCDC31337; break;  case 0x44F: dwFound=0xCDC31337; break;  case 0x448: dwFound=0xCDC31337; break;  case 0x450: dwFound=0xCDC31337; break;  case 0xC8F: dwFound=0xCDC31337; \/\/break; }  if(0xCDC31337==dwFound) { OnKbdLeds(); ToggleLed(1,1);  dwFound=0; bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrFound,&amp;dwFound,sizeof(dwFound),NULL); }  } \/\/ End \"if dwFound\"  Sleep(20); \/\/ Give up  hWnd=FindWindow(NULL,GAppname_UT);  } \/\/ End \"while\"  return 0; }  void mb(char* s) { UINT uType=MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND | MB_SYSTEMMODAL;  int n=0; if(strstr(s,\"Failed\") || strstr(s,\"Error\")) ++n;  if(n) { uType &amp;=~MB_ICONINFORMATION; uType |=MB_ICONWARNING; } MessageBox(GetActiveWindow(),s,GAppname,uType);  if(n) ExitProcess(n); }  \/* void Trigger() { _asm cmp esi, 0x106720F4 _asm je NEXT _asm jmp BACK  NEXT: _asm cmp edi, 0x412 _asm je FOUND  _asm cmp edi, 0x426 _asm je FOUND  _asm cmp edi, 0x44A _asm je FOUND  _asm cmp edi, 0x44C _asm je FOUND  _asm cmp edi, 0x44D _asm je FOUND  _asm cmp edi, 0x446 _asm je FOUND  _asm cmp edi, 0x44E _asm je FOUND  _asm cmp edi, 0x44F _asm je FOUND  _asm cmp edi, 0x448 _asm je FOUND  _asm cmp edi, 0x450 _asm je FOUND  _asm cmp edi, 0xC8F _asm je FOUND  _asm jmp BACK  FOUND: \/\/_asm mov [g_found], 1 BACK: \/\/_asm jmp } *\/  #define IOCTL_KEYBOARD_SET_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 2, METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_KEYBOARD_QUERY_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 0x10, METHOD_BUFFERED,FILE_ANY_ACCESS)  void OnKbdLeds() { if(!DefineDosDevice(DDD_RAW_TARGET_PATH,\"Kbd000000\",\"\\\\Device\\\\KeyboardClass0\")) mb(\"Failed DefineDosDevice\");  HANDLE hDevice=CreateFile(\"\\\\\\\\.\\\\Kbd000000\",GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); if(INVALID_HANDLE_VALUE==hDevice) mb(\"Failed open kbd\");  unsigned int InBuffer; DWORD OutBufferSize; unsigned char p[]={32};  for(int i=0; i&lt;300; ++i) { InBuffer=0; InBuffer |=p[i] &lt;&lt; 16; DeviceIoControl(hDevice,IOCTL_KEYBOARD_SET_INDICATORS,&amp;InBuffer,sizeof(InBuffer),NULL,0,&amp;OutBufferSize,NULL); Sleep(10); }  DefineDosDevice(DDD_REMOVE_DEFINITION,\"Kbd000000\",NULL); CloseHandle(hDevice); }  void ToggleLed(BOOL toggle, int led) { if(!DefineDosDevice(DDD_RAW_TARGET_PATH,\"Kbd000000\",\"\\\\Device\\\\KeyboardClass0\")) mb(\"Failed DefineDosDevice\");  HANDLE hDevice=CreateFile(\"\\\\\\\\.\\\\Kbd000000\",GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); if(INVALID_HANDLE_VALUE==hDevice) mb(\"Failed open kbd\");  DWORD OutBufferSize; unsigned int InBuffer=0, output=0;  if(!DeviceIoControl(hDevice,IOCTL_KEYBOARD_QUERY_INDICATORS,&amp;InBuffer,sizeof(InBuffer),&amp;output, sizeof(output),&amp;OutBufferSize, NULL)) { CloseHandle(hDevice); mb(\"Failed query kbd\"); }  InBuffer=output;  if(toggle) InBuffer &amp;= ~(led &lt;&lt; 16); else InBuffer |=led &lt;&lt; 16;  DeviceIoControl(hDevice,IOCTL_KEYBOARD_SET_INDICATORS,&amp;InBuffer,sizeof(InBuffer),NULL,0,&amp;OutBufferSize,NULL);  CloseHandle(hDevice); }  char* appGetOpenFileName() { static char fname[MAX_PATH];  OPENFILENAME ofn; memset(&amp;ofn,0,sizeof(OPENFILENAME)); fname[0]=0;  ofn.lStructSize=sizeof(OPENFILENAME); ofn.hInstance=GetModuleHandle(NULL); ofn.lpstrFile=fname; ofn.lpstrInitialDir=\"D:\\\\Games\\\\ut99\\\\System\"; ofn.nMaxFile=MAX_PATH; ofn.lpstrFileTitle=NULL; ofn.nMaxFileTitle=0; ofn.lpstrTitle=\"Select UnrealTournament.exe\"; ofn.lpstrFilter=\"Applications (*.exe)\\0*.exe\\0\"; ofn.Flags=OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;  GetOpenFileName(&amp;ofn); return fname; }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ &lt;&lt;eof>> WinMain.cpp \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u044b\u0442\u043b\u0438\u0432\u044b\u0435 \u0443\u043c\u044b \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441\u043f\u0440\u043e\u0441\u044f\u0442: &#8212; &#171;\u043a\u0430\u043a \u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b \u0430\u0434\u0440\u0435\u0441, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f?&#187;.<\/p>\n<p>\u041e\u0431 \u044d\u0442\u043e\u043c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/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\/709802\/\"> https:\/\/habr.com\/ru\/post\/709802\/<\/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>\u0418\u0433\u0440\u0430\u044f \u0432 Unreal Tournament (ut99) \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u0442\u0438\u043a\u0443 &#171;\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0430 \u0432 \u0437\u0430\u0441\u0430\u0434\u0435&#187;, \u0442\u0430\u043a\u0438\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 camper.<\/p>\n<p>\u042f \u043c\u0438\u0440\u043d\u043e c\u0442\u043e\u044e \u0437\u0430 \u044f\u0449\u0438\u043a\u043e\u043c \u0438 \u0441\u043b\u0443\u0448\u0430\u044e \u043c\u0443\u0437\u044b\u043a\u0443.<\/p>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b &#171;\u0440\u0435\u0441\u043f\u0430\u0432\u043d\u0430&#187; (\u0432\u043e\u0441\u043a\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0430).<br \/>\u042f \u0433\u043e\u0432\u043e\u0440\u044e: &#8212; \u041f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b \u044f \u0441\u043b\u0443\u0448\u0430\u044e \u043c\u0443\u0437\u044b\u043a\u0443. \u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u0432 (\u0432 \u0438\u0433\u0440\u0435) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435, \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0437\u0432\u0443\u043a respawn&#8217;a \u0441\u043b\u044b\u0448\u0435\u043d \u043d\u0435\u043e\u0442\u0447\u0435\u0442\u043b\u0438\u0432\u043e. \u042f \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f. \u041d\u0435\u043b\u044c\u0437\u044f-\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e-\u0442\u043e \u0432 \u0432\u0438\u0434\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430?<\/p>\n<p>\u0417\u0430\u0440\u043e\u0434\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u0438\u0434\u0435\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u043b\u0430\u0441\u044c. \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437.<\/p>\n<p>\u0421\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u043d.<\/p>\n<ol>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044f UnrealTournament.exe \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u0430\u0442\u0447\u0438\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0432\u043e\u0441\u043a\u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0438\u0433\u0440\u043e\u043a\u0430 &#8212; \u043c\u0438\u0433\u043d\u0443\u0442\u044c \u0434\u0438\u043e\u0434\u043e\u043c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 Unreal Tournament, \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 System \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0438 dll-\u043c\u043e\u0434\u0443\u043b\u0438.<br \/>\u042f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u043c\u043e\u0434\u0443\u043b\u044c Galaxy.dll, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0437\u0432\u0443\u043a.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0431\u0440\u043e\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger, \u043d\u0430 \u042f\u041f \u0421 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439.<br \/> \u0412 \u0438\u0442\u043e\u0433\u0435 &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u0430 \u0432 \u0448\u0435\u043b\u043b-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d.<\/p>\n<p>\u041a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 Trigger?<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ESI \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x106720F4, \u0437\u043d\u0430\u0447\u0438\u0442 &#8212; \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 EDI, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: 0x412, 0x426, 0x44A, 0x44C, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<pre><code class=\"cpp\">void Trigger() { _asm cmp esi, 0x106720F4 _asm je NEXT _asm jmp BACK  NEXT: _asm cmp edi, 0x412 _asm je FOUND  _asm cmp edi, 0x426 _asm je FOUND  _asm cmp edi, 0x44A _asm je FOUND  _asm cmp edi, 0x44C _asm je FOUND  _asm cmp edi, 0x44D _asm je FOUND  _asm cmp edi, 0x446 _asm je FOUND  _asm cmp edi, 0x44E _asm je FOUND  _asm cmp edi, 0x44F _asm je FOUND  _asm cmp edi, 0x448 _asm je FOUND  _asm cmp edi, 0x450 _asm je FOUND  _asm cmp edi, 0xC8F _asm je FOUND  _asm jmp BACK  FOUND: \/\/_asm mov [g_found], 1 BACK: \/\/_asm jmp } <\/code><\/pre>\n<p>\u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e, Trigger \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 (\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430).<\/p>\n<p>\u041f\u043b\u0430\u043d \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438.<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<\/li>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e hex-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Galaxy.dll.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 Ida (\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440) &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 (\u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438) \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 Galaxy.dll (\u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c) \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430.<br \/> \u0412 Ida \u044f \u0437\u0430\u0434\u0430\u043b \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e-\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 &#171;align&#187; (\u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0434\u0432\u043e\u0439\u043a\u0443) (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl+T).<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Align &#8212; \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b (\u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b).<br \/> \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<p>\u041f\u043e\u0438\u0441\u043a \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u043b\u0433\u043e \u0436\u0434\u0430\u0442\u044c, \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 (2000h) 8192 \u0431\u0430\u0439\u0442!<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0423\u0437\u043d\u0430\u0435\u043c \u0443 Ida &#8212; \u0433\u0434\u0435, \u0432 \u0444\u0430\u0439\u043b\u0435 Galaxy.dll &#8212; \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 (\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435) \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e<br \/> \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f?<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e.<br \/> \u0412 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e &#171;Jmp&#187; \u0432\u044b\u0431\u0440\u0430\u0442\u044c &#171;Jmp to file offset&#8230;&#187;.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441, \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0438\u043a.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b Galaxy.dll \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 (\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u0430\u043a \u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 QView &#8212; \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043f\u0430\u0440\u0443 \u0440\u0430\u0437 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;Enter&#187; &#8212; \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430.<br \/> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;F2&#187; \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c 32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434.<br \/> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;F5&#187; \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441: 361BA \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;Enter&#187;.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b \u043e\u043a\u0430\u0436\u0435\u0442\u0435\u0441\u044c \u0432 \u043c\u0435\u0441\u0442\u0435 \u0433\u0434\u0435 \u043c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Trigger.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434 (\u0432 Qview \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 &#171;Tab&#187;):<\/p>\n<ol>\n<li>\n<p>81FEF4206710 cmp esi, 106720F4<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0432\u0435\u0434\u0435\u043d \u0432\u0435\u0441\u044c \u043a\u043e\u0434 &#8212; \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0442\u043e\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 (\u0442.\u0435. \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e &#8212; \u0432\u0432\u043e\u0434\u0438\u043c nop (\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c) \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b; \u044d\u0442\u043e \u043a\u0430\u043a \u043d\u0430\u0431\u0440\u043e\u0441\u043e\u043a &#8212; \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434, \u043f\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d,<br \/> \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c &#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>81FF12040000 cmp edi, 00000412<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF26040000 cmp edi, 00000426<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4A040000 cmp edi, 0000044A<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4C040000 cmp edi, 0000044C<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4D040000 cmp edi, 0000044D<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF46040000 cmp edi, 00000446<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4E040000 cmp edi, 0000044E<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF4F040000 cmp edi, 0000044F<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF48040000 cmp edi, 00000448<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF50040000 cmp edi, 00000450<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>81FF8F0C0000 cmp edi, 00000C8F<\/p>\n<\/li>\n<li>\n<p>&#171;nop&#187; \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/li>\n<li>\n<p>FF15B4BE6710 call   dword ptr [1067BEB4]<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430, \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0438\u0437 \u043c\u0435\u0441\u0442\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<ol start=\"26\">\n<li>\n<p>E9A1B5FDFF jmp 000117C8<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<ol start=\"27\">\n<li>\n<p>893DE0F06510 mov dword ptr [1065F0E0], edi<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &#171;EDI&#187;<\/p>\n<\/li>\n<\/ul>\n<ol start=\"28\">\n<li>\n<p>EBED jmp 0003621C<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043f\u0443\u043d\u043a\u0442 #25<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b.<br \/> \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Trigger.<\/p>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 &#171;Qview&#187; \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;F5&#187;, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 117C2 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Enter&#187;.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435:<br \/> a) E9F3490200 jmp 000361BA<br \/> b) 90 nop<\/p>\n<p>\u0412\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 Galaxy.dll \u0432 Ida (\u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0435 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e\u0433\u043e).<br \/> \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d &#8212; \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Options&#187; &#8212; &#171;General&#187; &#8212; &#171;Reanalyze program&#187;).<br \/> \u0422\u0430\u043a\u0436\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c &#171;Galaxy.dll&#187; \u0441\u043d\u043e\u0432\u0430.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0434\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e Trigger, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 Ida \u043a\u043b\u0430\u0432\u0438\u0448\u0443 &#171;G&#187;, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 106361BA.<\/p>\n<p>C\u043c\u043e\u0442\u0440\u0438\u043c:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 &#171;; CODE XREF: sub_10610C00+BC2&#187; \u0438 \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u043c \u0432 \u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u043e\u043c\u043d\u0438\u0442\u0435 &#8212; \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0430\u0434\u0440\u0435\u0441 106117C2.<\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Debugger&#187; \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a &#171;Local Win32 Debugger&#187;.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (BPX) \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f &#171;jmp&#187;).<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0432 \u043c\u0435\u043d\u044e &#171;Debugger&#187; &#171;Start process&#187;, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 (\u0447\u0435\u043a\u0431\u043e\u043a\u0441):<br \/> &#171;Don&#8217;t display this message again&#187; \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Yes&#187;.<br \/> Ida \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 &#171;UnrealTournamet.exe&#187;.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (BPX).<br \/> \u041f\u0440\u043e\u0439\u0434\u0438\u0442\u0435 \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e (\u043d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0443 F8).<br \/> \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432 \u0441\u0431\u043e\u0440\u0435.<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ WinMain.cpp \/\/ \/\/ \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 UT99 \u0437\u0432\u0443\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442: Galaxy.GalaxyAudioSubsystem. \/\/ \u0415\u0441\u043b\u0438, \u0447\u0442\u043e-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a - \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0444\u0430\u0439\u043b UnrealTournament.ini, \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e-\u043b\u0438: AudioDevice=Galaxy.GalaxyAudioSubsystem  #include &lt;windows.h> #include &lt;winioctl.h>  char* GAppname=\"Resp2A Trigger UT99'\"; char* GAppname_UT=\"Unreal Tournament\";  void mb(char* s); void OnKbdLeds(); void ToggleLed(BOOL toggle, int led); char* appGetOpenFileName();  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { CreateMutex(NULL,0,GAppname); BOOL AlreadyRunning=(ERROR_ALREADY_EXISTS==GetLastError()); if(AlreadyRunning) return 1;  \/\/ Load config HKEY key; RegCreateKey(HKEY_CURRENT_USER, \"Software\\\\MyCompany\\\\MyAppname\",&amp;key);  DWORD dwLen=MAX_PATH; static char CommandLine[MAX_PATH]; RegQueryValueEx(key,\"CommandLine\",NULL,NULL,(BYTE*)CommandLine,&amp;dwLen);  if(!CommandLine[0]) { lstrcpy(CommandLine,appGetOpenFileName()); if(!CommandLine[0]) { RegCloseKey(key); return 0; } }  char CurrentDirectory[MAX_PATH]; lstrcpy(CurrentDirectory,CommandLine);  int i; for(i=lstrlen(CurrentDirectory)-1;i>0;--i) { if('\\\\'==CurrentDirectory[i-1] || '\/\/'==CurrentDirectory[i-1]) break; } CurrentDirectory[i]=0;  PROCESS_INFORMATION pi; STARTUPINFO si; memset(&amp;si,0,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_FORCEOFFFEEDBACK;  char cmdLine[512]; wsprintf(cmdLine,\"%s\",CommandLine); \/\/wsprintf(cmdLine,\"%s 195.98.73.166:6666\",CommandLine);  CreateProcess(NULL, cmdLine,NULL,NULL,0,0,NULL,CurrentDirectory,&amp;si,&amp;pi); if(!pi.hProcess) { CommandLine[0]=0; RegSetValueEx(key,\"CommandLine\",NULL,REG_SZ,(BYTE*)(CommandLine),MAX_PATH); RegCloseKey(key);  char buf[512]; wsprintf(buf,\"Failed CreateProcess\\n\\n\\\"%s\\\"\",CommandLine); mb(buf); } CloseHandle(pi.hThread);  \/\/ Save config RegSetValueEx(key,\"CommandLine\",NULL,REG_SZ,(BYTE*)(CommandLine),MAX_PATH); RegCloseKey(key);  HWND hWnd=FindWindow(NULL,GAppname_UT); while(!hWnd) { Sleep(1000); hWnd=FindWindow(NULL,GAppname_UT); }  \/*------------------------------------------------------- The trigger -------------------------------------------------------*\/ DWORD addrTrigger=0x106361BA;  unsigned char codeTrigger[]= \"\\x81\\xFE\\xF4\\x20\\x67\\x10\\x74\\x02\\xEB\\x58\\x81\\xFF\\x12\\x04\\x00\\x00\" \"\\x74\\x5B\\x81\\xFF\\x26\\x04\\x00\\x00\\x74\\x53\\x81\\xFF\\x4A\\x04\\x00\\x00\" \"\\x74\\x4B\\x81\\xFF\\x4C\\x04\\x00\\x00\\x74\\x43\\x81\\xFF\\x4D\\x04\\x00\\x00\" \"\\x74\\x3B\\x81\\xFF\\x46\\x04\\x00\\x00\\x74\\x33\\x81\\xFF\\x4E\\x04\\x00\\x00\" \"\\x74\\x2B\\x81\\xFF\\x4F\\x04\\x00\\x00\\x74\\x23\\x81\\xFF\\x48\\x04\\x00\\x00\" \"\\x74\\x1B\\x81\\xFF\\x50\\x04\\x00\\x00\\x74\\x13\\x81\\xFF\\x8F\\x0C\\x00\\x00\" \"\\x74\\x0B\\xFF\\x15\\xB4\\xBE\\x67\\x10\\xE9\\xA1\\xB5\\xFD\\xFF\\x89\\x3D\\xE0\" \"\\xF0\\x65\\x10\\xEB\\xED\";  DWORD codeTrigger_Len=117;  \/*------------------------------------------------------- The patch -------------------------------------------------------*\/ DWORD addrPatch=0x106117C2;  \/\/ E9F349020090 unsigned char codePatch[]=\"\\xE9\\xF3\\x49\\x02\\x00\\x90\"; DWORD codePatch_Len=6;  DWORD dwMagic=0; BYTE value[128];  BOOL bRet=FALSE; int n=14; \/\/ Wait init \"UT\" 14 seconds  while(n) { ReadProcessMemory(pi.hProcess, (LPVOID)addrPatch,&amp;dwMagic,sizeof(dwMagic),NULL); if(dwMagic) { if(0xBEB415FF==dwMagic) { memcpy(&amp;value,codeTrigger,codeTrigger_Len); bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrTrigger,&amp;value,codeTrigger_Len,NULL);  if(bRet) { memcpy(&amp;value,codePatch,codePatch_Len); bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrPatch,&amp;value,codePatch_Len,NULL); } } break;  } \/\/ End \"if dwMagic\"  --n; Sleep(1000);  } \/\/ End \"while\"  if(!bRet) mb(\"Failed patch\");  DWORD addrFound=0x1065F0E0; DWORD dwFound=0;  hWnd=FindWindow(NULL,GAppname_UT);  while(hWnd) { ReadProcessMemory(pi.hProcess, (LPVOID)addrFound,&amp;dwFound,sizeof(dwFound),NULL); if(dwFound) { switch(dwFound) { case 0x412: dwFound=0xCDC31337; break;  case 0x426: dwFound=0xCDC31337; break;  case 0x44A: dwFound=0xCDC31337; break;  case 0x44C: dwFound=0xCDC31337; break;  case 0x44D: dwFound=0xCDC31337; break;  case 0x446: dwFound=0xCDC31337; break;  case 0x44E: dwFound=0xCDC31337; break;  case 0x44F: dwFound=0xCDC31337; break;  case 0x448: dwFound=0xCDC31337; break;  case 0x450: dwFound=0xCDC31337; break;  case 0xC8F: dwFound=0xCDC31337; \/\/break; }  if(0xCDC31337==dwFound) { OnKbdLeds(); ToggleLed(1,1);  dwFound=0; bRet=WriteProcessMemory(pi.hProcess, (LPVOID)addrFound,&amp;dwFound,sizeof(dwFound),NULL); }  } \/\/ End \"if dwFound\"  Sleep(20); \/\/ Give up  hWnd=FindWindow(NULL,GAppname_UT);  } \/\/ End \"while\"  return 0; }  void mb(char* s) { UINT uType=MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND | <\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-343736","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343736","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=343736"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/343736\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=343736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=343736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=343736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}