{"id":198334,"date":"2013-10-21T11:26:04","date_gmt":"2013-10-21T07:26:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=198334"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=198334","title":{"rendered":"<span class=\"post_title\">\u041f\u0438\u0448\u0435\u043c \u0441\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 Counter Strike 1.6. \u0427\u0430\u0441\u0442\u044c 1-\u044f. \u00ab\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b\u00bb<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c.<br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 <b>GoldSrc<\/b> \u0438\u0433\u0440. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u00ab\u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e\u00bb \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 <b>Counter Strike 1.6<\/b>, \u0445\u043e\u0442\u044f, \u044d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e-\u0438\u0434\u0435\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 <b>Half-Life<\/b> \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0433\u0440\u0430\u0445 \u043d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u0434\u0432\u0438\u0436\u043a\u0435.<\/p>\n<p>  \u0427\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\u0421\u0430\u043c \u043a\u043b\u0438\u0435\u043d\u0442 Counter Strike, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 Steam, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u043e\u0431\u044b\u0442\u044c <a href=\"http:\/\/forum.csmania.ru\/viewtopic.php?f=102&amp;t=38443&amp;start=45\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438\u043b\u0438 \u043a\u0443\u043f\u0438\u0442\u044c <a href=\"http:\/\/store.steampowered.com\/app\/10\/?l=russian\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/li>\n<li>\u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f Linux \u0438\u043b\u0438 MacOs (\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c hw.so \u0438\u043b\u0438 hw.dylib \u0438\u0437 \u043d\u0435\u0451. \u0410 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e Half-Life \u0446\u0435\u043b\u0438\u043a\u043e\u043c)<\/li>\n<li><a href=\"https:\/\/github.com\/ValveSoftware\/halflife\">HLSDK<\/a><\/li>\n<li>\u0422\u0430\u043a \u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f IDA PRO<\/li>\n<li>\u041a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio.<\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b<\/h3>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Win32-&gt;dll, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0437 HLSDK:  <\/p>\n<ul>\n<li>cl_dll<\/li>\n<li>common<\/li>\n<li>dlls<\/li>\n<li>engine<\/li>\n<li>game_shared<\/li>\n<li>pm_shared<\/li>\n<li>public<\/li>\n<\/ul>\n<p>  \u0421\u043e\u0432\u0435\u0442\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \/include\/HLSDK \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0442\u0443\u0434\u0430.<br \/>  \u0427\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b. \u041f\u0440\u043e\u0439\u0434\u0438\u0442\u0435\u0441\u044c \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e HLSDK (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Notepad++), \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 HSPRITE \u0432 SptiteHandle_t, \u0438\u0431\u043e 10-\u044f \u0441\u0442\u0443\u0434\u0438\u044f \u043d\u0430 HSPRITE \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u0438 \u0437\u0430\u043c\u0435\u043d\u0435 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u00ab\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u00bb.<\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 stdafx.h \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0432\u0438\u0434\u0443:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">stdafx.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#pragma once #ifdef WIN32 #define WIN32_LEAN_AND_MEAN  #include &lt;Windows.h&gt; #else #ifndef LINUX #define LINUX #endif #ifndef linux #define linux #endif #endif  #ifdef _WIN32 \/\/ Used for dll exporting and importing #define  DLLEXPORT   extern &quot;C&quot; __declspec( dllexport )  #define  DLLIMPORT   extern &quot;C&quot; __declspec( dllimport )  \/\/ Can't use extern &quot;C&quot; when DLL exporting a class #define  DLL_CLASS_EXPORT   __declspec( dllexport )  #define  DLL_CLASS_IMPORT   __declspec( dllimport )  \/\/ Can't use extern &quot;C&quot; when DLL exporting a global #define  DLL_GLOBAL_EXPORT   extern __declspec( dllexport )  #define  DLL_GLOBAL_IMPORT   extern __declspec( dllimport ) #elif defined _LINUX  \/\/ Used for dll exporting and importing #define  DLLEXPORT   extern &quot;C&quot;  #define  DLLIMPORT   extern &quot;C&quot;   \/\/ Can't use extern &quot;C&quot; when DLL exporting a class #define  DLL_CLASS_EXPORT    #define  DLL_CLASS_IMPORT    \/\/ Can't use extern &quot;C&quot; when DLL exporting a global #define  DLL_GLOBAL_EXPORT   extern #define  DLL_GLOBAL_IMPORT   extern  #else #error &quot;Unsupported Platform.&quot; #endif  #include &lt;wrect.h&gt; #include &lt;cl_dll.h&gt; #include &lt;in_defs.h&gt;  #include &lt;cdll_int.h&gt; #include &lt;cl_entity.h&gt; #include &lt;com_model.h&gt; #include &lt;cvardef.h&gt; #include &lt;entity_state.h&gt; #include &lt;entity_types.h&gt; #include &lt;event_args.h&gt; #include &lt;net_api.h&gt; #include &lt;r_studioint.h&gt; #include &lt;pm_defs.h&gt; #include &lt;r_efx.h&gt; #include &lt;com_model.h&gt; #include &lt;ref_params.h&gt; #include &lt;studio_event.h&gt; #include &lt;event_api.h&gt; #include &lt;screenfade.h&gt; #include &lt;demo_api.h&gt; #include &lt;triangleapi.h&gt; #include &lt;ivoicetweak.h&gt; #include &lt;con_nprint.h&gt; \/\/Interfaces #include &lt;interface.h&gt; <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u2014 \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<br \/>  \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u044d\u0442\u0430 \u00ab\u043e\u0441\u043d\u043e\u0432\u0430\u00bb \u0431\u0443\u0434\u0435\u0442 \u00ab\u043e\u0431\u0440\u0430\u0441\u0442\u0430\u0442\u044c\u00bb \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u0441\u0451 \u043a\u0430\u043a \u0435\u0441\u0442\u044c.<br \/>  \u0421\u043e\u0432\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0432 \/include\/HLSDK \u0431\u044b\u043b \u0434\u0430\u043d \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 metamod-a, \u0438 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0438\u0445 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \/include\/metamod\/<\/p>\n<h3>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f<\/h3>\n<p>  \u041a\u0430\u043a \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0433\u0440\u0443?  <\/p>\n<ul>\n<li>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0435\u0440\u0432\u044b\u0439, \u0441\u0443\u0440\u043e\u0432\u044b\u0439 \u2014 \u0438\u043d\u044c\u0435\u043a\u0446\u0438\u044f DLL. \u041d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0432\u0432\u0438\u0434\u0443 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0439 \u0441\u0443\u0440\u043e\u0432\u043e\u0441\u0442\u0438.<\/li>\n<li>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u0442\u043e\u0440\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u2014 \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e\u0434\u0446\u0435\u043f\u0438\u0442 \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c.<\/li>\n<li>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u0440\u0435\u0442\u0438\u0439, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0436\u0435 \u2014 \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0438\u0433\u0440\u0443, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u0441\u043e\u0431\u043e\u0439 hl.exe<\/li>\n<\/ul>\n<p>  \u041a\u0430\u043a \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0433\u0440\u0443? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, <b>GoldSrc<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <b>mss32.dll<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0441\u0435 <b>.asi<\/b>-\u0444\u0430\u0439\u043b\u044b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0433\u0440\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u042d\u0442\u0438 <b>.asi<\/b>-\u0444\u0430\u0439\u043b\u044b, \u043f\u043e \u0444\u0430\u043a\u0442\u0443, \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 <b>.dll<\/b>-\u043a\u0438.<br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043d\u0435 <b>.dll<\/b>, \u0430 <b>.asi<\/b>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">.asi \u043f\u043e\u0434 Linux<\/b><\/p>\n<div class=\"spoiler_text\"><b>.asi<\/b>-\u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434 \u043b\u0438\u043d\u0443\u043a\u0441\u043e\u043c \u044d\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 (\u043e\u043d\u0438 \u0442\u0430\u043c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0438 \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u043d\u043e \u0443 \u043d\u0438\u0445 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u043d\u0435 <b>ELF<\/b> \u0430 <b>MZ&#8230;.PE<\/b>. \u041a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c, \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u0435 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e?), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 &quot;<b>asi \u043f\u043e\u0434 Linux<\/b>&quot; \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043e\u043a\u043e\u0435.<br \/>  \u0417\u0430\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0433\u0440\u044b \u043d\u0430\u0448\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c, \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a, \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0434 <b>Linux<\/b> \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u0430\u0440\u0430\u0439\u0442\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u043c.  <\/div>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <b>Half-Life<\/b>, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0432 <b>DllMain<\/b> MessageBox-\u044b \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u043d\u0430 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <b>mss32.dll<\/b> \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0451\u043c \u043d\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>RIB_Main<\/b>.<br \/>  \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u0442\u043e asi-\u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 GoldSrc, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0435\u0440\u0441\u0438\u0438 4554, \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0435\u0431\u0435 \u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 DllMain, \u043d\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 6027 (\u044d\u0442\u0430 \u0442\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u043d\u0430\u0447\u0430\u043b \u044d\u0442\u0438 \u00ab\u043a\u043e\u043f\u0430\u043d\u0438\u044f\u00bb), \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>Rib_Main<\/b><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 2 \u0444\u0430\u0439\u043b\u0430: <b>AsiMain.cpp<\/b> \u0438 <b>AsiMain.h<\/b><br \/>  \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>RibMain<\/b> \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f 5 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0437 \u043d\u0438\u0445 3- \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <b>void*<\/b>. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043d\u0430\u0434\u0435\u0436\u0434\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u00ab\u043f\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 <b>AsiMain.h<\/b>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">AsiMain.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#ifdef _WIN32 #define AILCALL        __stdcall #else #define AILCALL #endif  #ifndef C8 #define C8 char #endif  #ifndef U32 #define U32 unsigned int #endif  #ifndef S32 #define S32 signed int #endif  #ifndef UINTa #define UINTa unsigned int #endif  typedef U32 HPROVIDER; typedef S32 RIBRESULT;  typedef enum {    RIB_NONE = 0, \/\/ No type    RIB_CUSTOM,   \/\/ Used for pointers to application-specific structures    RIB_DEC,      \/\/ Used for 32-bit integer values to be reported in decimal    RIB_HEX,      \/\/ Used for 32-bit integer values to be reported in hex    RIB_FLOAT,    \/\/ Used for 32-bit single-precision FP values    RIB_PERCENT,  \/\/ Used for 32-bit single-precision FP values to be reported as percentages    RIB_BOOL,     \/\/ Used for Boolean-constrained integer values to be reported as TRUE or FALSE    RIB_STRING,   \/\/ Used for pointers to null-terminated ASCII strings    RIB_READONLY = 0x80000000  \/\/ Property is read-only } RIB_DATA_SUBTYPE;  typedef enum {    RIB_FUNCTION = 0,    RIB_PROPERTY       \/\/ Property: read-only or read-write data type } RIB_ENTRY_TYPE;  typedef struct {    RIB_ENTRY_TYPE   type;        \/\/ See list above    C8 FAR          *entry_name;  \/\/ Name of desired function or property    UINTa            token;       \/\/ Function pointer or property token    RIB_DATA_SUBTYPE subtype;     \/\/ Property subtype } RIB_INTERFACE_ENTRY;   typedef HPROVIDER\t(*RIB_alloc_provider_handle_ptr) (long module); typedef RIBRESULT\t(*RIB_register_interface_ptr) (HPROVIDER  provider, C8 const FAR *interface_name, S32 entry_count, RIB_INTERFACE_ENTRY const FAR *rlist); typedef RIBRESULT\t(*RIB_unregister_interface_ptr)  (HPROVIDER  provider, C8 const FAR *interface_name, S32 entry_count, RIB_INTERFACE_ENTRY const FAR *rlist);  EXTERN_C DLLEXPORT S32 AILCALL RIB_Main(HPROVIDER provider_handle, \t\t\t\t\t\t\t\t\t\tU32 up_down, \t\t\t\t\t\t\t\t\t\tRIB_alloc_provider_handle_ptr RIB_alloc_provider_handle, \t\t\t\t\t\t\t\t\t\tRIB_register_interface_ptr RIB_register_interface, \t\t\t\t\t\t\t\t\t\tRIB_unregister_interface_ptr RIB_unregister_interface \t\t\t\t\t\t\t\t\t\t); <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e \u0444\u0430\u043a\u0442\u0443, \u0432 <b>RibMain<\/b> \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e 1 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440- <b>up_down<\/b>. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f 2 \u0440\u0430\u0437\u0430: \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0433\u0440\u044b \u0438 \u043f\u0440\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u044b.<br \/>  \u0415\u0441\u043b\u0438 <b>up_down<\/b> \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u0418\u043d\u0430\u0447\u0435 \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f.<br \/>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0445\u0438\u043d\u0442: \u0415\u0441\u043b\u0438 <b>DllMain<\/b> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u043d\u043e <b>RibMain<\/b> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <b>up_down<\/b> \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e \u043d\u0435 \u0431\u044b\u043b \u0432\u044b\u0437\u0432\u0430\u043d, \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u0433\u0440\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0448\u0442\u0430\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c. \u0422\u043e\u0431\u0438\u0448\u044c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b\u043b\u0435\u0442\u0435\u043b\u0430 \u0438\u0437-\u0437\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c <b>AsiMain.cpp<\/b>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">AsiMain.cpp<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &quot;stdafx.h&quot; #include &quot;AsiMain.h&quot;  EXTERN_C DLLEXPORT S32 AILCALL RIB_Main(HPROVIDER provider_handle, \t\t\t\t\t\t\t\t\t\tU32 up_down, \t\t\t\t\t\t\t\t\t\tRIB_alloc_provider_handle_ptr RIB_alloc_provider_handle, \t\t\t\t\t\t\t\t\t\tRIB_register_interface_ptr RIB_register_interface, \t\t\t\t\t\t\t\t\t\tRIB_unregister_interface_ptr RIB_unregister_interface \t\t\t\t\t\t\t\t\t\t) {     if(up_down)     { \t\t\/\/\u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f. \t} \telse \t{ \t\t\/\/\u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f. \t} \treturn 1; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0423\u0440\u0430. Asi-\u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442, \u0433\u043e\u0442\u043e\u0432.<br \/>  \u041d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u043b.<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 <b>cl_enginefuncs_t<\/b>. \u041e\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 <b>HLSDK\\engine\\APIProxy.h<\/b> \u0438 \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0435\u0451 \u043d\u0430\u0439\u0442\u0438. \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u043f\u043e\u0438\u0441\u043a \u043d\u0443\u0436\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e, \u043a\u0430\u043a \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u0438\u043b\u0438 \u043f\u043e \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c. \u0415\u0441\u043b\u0438 \u043c\u043d\u0435 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442, \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d. \ud83d\ude42<br \/>  \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 cl_enginefuncs_t \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f <b>IDA Pro<\/b>, \u043f\u0440\u0438\u0447\u0451\u043c, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0443\u043c\u044f.<br \/>  \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <b>hw.dll<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Half-Life. \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0431\u0430\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430 0x40000000. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <b>Edit<\/b>-&gt;<b>Segments<\/b>-&gt;<b>Rebase Program<\/b>, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0431\u0430 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 <b>ImageBase<\/b> \u0438 \u0432\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 <b>Value<\/b> 0x40000000.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <b>hw.so<\/b>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/cheatmakers.ru\/habrahabr\/part1\/hw_6153.so.zip\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>.<br \/>  \u0418 \u0442\u0430\u043c \u0438 \u0442\u0430\u043c \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 <b>ScreenShake<\/b><br \/>  \u0422\u043e, \u0447\u0442\u043e \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 275\u041a\u0411<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ace\/c8b\/202\/acec8b202f2a4d5a6085f3d398a89efc.jpg\"\/>  <\/div>\n<\/div>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u0434 <b>hw.dll<\/b> \u0438 <b>hw.so<\/b> \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0432 <b>hw.dll<\/b> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0432 \u0438\u0445 \u0438\u0437 <b>hw.so<\/b>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 193\u041a\u0411<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/e3f\/d89\/0fb\/e3fd890fbac2f16a30511196c94a8704.jpg\"\/>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <b>cl_enginefuncs<\/b> \u0432 <b>hw.dll<\/b>.<br \/>  \u0423 \u043c\u0435\u043d\u044f \u044d\u0442\u043e <b>0x40134260<\/b>. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>0x40000000<\/b>, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0443\u0434\u0435\u0442 <b>0x134260<\/b><\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<br \/>  \u041e\u0431\u044a\u044f\u0432\u0438\u0442\u0435 \u0432 <b>AsiMain.cpp<\/b>, \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438  <\/p>\n<pre><code class=\"cpp\">cl_enginefunc_t *cl_enginefuncs; <\/code><\/pre>\n<p>  \u0422\u0430\u043c \u0436\u0435, \u043f\u0435\u0440\u0435\u0434 <b>RibMain<\/b> \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e  <\/p>\n<pre><code class=\"cpp\">void HabraHello() { \tcl_enginefuncs-&gt;Con_Printf(&quot;Hello, Habrahabr!\\n&quot;); } <\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u0434 <b>RibMain<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u043e\u043f\u0438\u0448\u0438\u0442\u0435  <\/p>\n<pre><code class=\"cpp\">\t\tHANDLE hw=LoadLibraryA(&quot;hw.dll&quot;); \t\tcl_enginefuncs=(cl_enginefunc_t*)((unsigned long)hw+0x134260); \t\tcl_enginefuncs-&gt;pfnAddCommand(&quot;SayHello&quot;,HabraHello); \/\/\u0422\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e, \u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 &quot;Hello World-a&quot;, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u043e\u0439\u0434\u0451\u0442. \/\/\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 interface.cpp, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0432. <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b <b>SayHello<\/b> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f <b>Hello, Habrahabr<\/b>.<\/p>\n<p>  \u0410\u0440\u0445\u0438\u0432 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/cheatmakers.ru\/habrahabr\/part1\/hw_6153.so.zip\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>.<br \/>  \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445 <b>\u041e\u0442\u043b\u0430\u0434\u043a\u0430<\/b> \u0438 <b>\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f<\/b> \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 <b>D:\\Steam\\SteamApps\\common\\Half-Life<\/b> \u043d\u0430 \u043f\u0443\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0448\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u044f\u043c.<br \/>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 <b>Steam<\/b>, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <b>Run_CS.exe<\/b>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443. \u0421 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043c\u044b \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0451. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u0437\u0430\u0447\u0435\u043c \u0432 <b>interface.cpp<\/b> \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>Sys_GetFactory<\/b> \u0438 \u0447\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u0435\u0451 \u043f\u043e\u043c\u043e\u0449\u044c\u044e.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/198334\/\"> http:\/\/habrahabr.ru\/post\/198334\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c.<br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 <b>GoldSrc<\/b> \u0438\u0433\u0440. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u00ab\u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e\u00bb \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 <b>Counter Strike 1.6<\/b>, \u0445\u043e\u0442\u044f, \u044d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e-\u0438\u0434\u0435\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 <b>Half-Life<\/b> \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0433\u0440\u0430\u0445 \u043d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u0434\u0432\u0438\u0436\u043a\u0435.<\/p>\n<p>  \u0427\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\u0421\u0430\u043c \u043a\u043b\u0438\u0435\u043d\u0442 Counter Strike, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 Steam, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u043e\u0431\u044b\u0442\u044c <a href=\"http:\/\/forum.csmania.ru\/viewtopic.php?f=102&amp;t=38443&amp;start=45\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438\u043b\u0438 \u043a\u0443\u043f\u0438\u0442\u044c <a href=\"http:\/\/store.steampowered.com\/app\/10\/?l=russian\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/li>\n<li>\u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f Linux \u0438\u043b\u0438 MacOs (\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c hw.so \u0438\u043b\u0438 hw.dylib \u0438\u0437 \u043d\u0435\u0451. \u0410 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e Half-Life \u0446\u0435\u043b\u0438\u043a\u043e\u043c)<\/li>\n<li><a href=\"https:\/\/github.com\/ValveSoftware\/halflife\">HLSDK<\/a><\/li>\n<li>\u0422\u0430\u043a \u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f IDA PRO<\/li>\n<li>\u041a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Visual Studio.<\/li>\n<\/ul>\n<p>  <\/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-198334","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198334","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=198334"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198334\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}