{"id":311928,"date":"2020-10-23T15:00:32","date_gmt":"2020-10-23T15:00:32","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=311928"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=311928","title":{"rendered":"\u0417\u0430\u0449\u0438\u0442\u0430 .Net \u043a\u043e\u0434\u0430 \u043e\u0442 \u0440\u0435\u0432\u0435\u0440\u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u043d\u0433\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ConfuserEx 0.6.0"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0431\u043e\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u0430 ConfuserEx 0.6.0 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430 .Net \u043f\u043e\u0434 Windows \u0438 Mono. \u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 2016 \u0433\u043e\u0434\u0443, \u043d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0442\u0435\u043c\u0430 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>ConfuserEx (<a href=\"http:\/\/yck1509.github.io\/ConfuserEx\/\">http:\/\/yck1509.github.io\/ConfuserEx\/<\/a>) \u043e\u0434\u0438\u043d \u0438\u0437 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f .Net \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0441\u0440\u0435\u0434\u0435 Windows .NET Framework \u0438 Mono.<br \/>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Protections\">\u043c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u0449\u0438\u0442\u044b \u043a\u043e\u0434\u0430<\/a> (\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0443\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0438). ConfuserEx \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0443\u0442\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0437\u0430\u0449\u0438\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0437\u0430\u0449\u0438\u0442\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u0430, \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u044f \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u0435-\u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0435\u0432\u0435\u0440\u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u043d\u0433.<\/p>\n<p>  <\/p>\n<h2 id=\"dokumentaciya\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Documentation\">WiKi<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"polzovatelskiy-interfeys\">\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p>  <\/p>\n<p>ConfuserEx \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 UI \u0440\u0435\u0436\u0438\u043c\u0435, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"rezhim-komandnoy-stroki\">\u0420\u0435\u0436\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\">ConfuserEx\\bin\\Confuser.CLI.exe ConfuserEx.CLI: No input files specified. Usage: Confuser.CLI -n|noPause &lt;project configuration&gt; Confuser.CLI -n|noPause -o|out=&lt;output directory&gt; &lt;modules&gt;     -n|noPause : no pause after finishing protection.     -o|out     : specifies output directory.     -probe     : specifies probe directory.     -plugin    : specifies plugin path.     -debug     : specifies debug symbol generation.&lt;\/source&gt;<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"bash\">ConfuserEx\\bin\\Confuser.CLI.exe -n LicenseManagerService.crproj   [INFO] ConfuserEx v0.6.0-custom Copyright (C) Ki 2014  [INFO] Running on Microsoft Windows NT 6.1.7601 Service Pack 1, .NET Framework v4.0.30319.0, 64 bits [DEBUG] Discovering plugins...  [INFO] Discovered 10 protections, 1 packers. [DEBUG] Resolving component dependency...  [INFO] Loading input modules...  [INFO] Loading 'LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe'...  [INFO] Initializing... [DEBUG] Building pipeline...  [INFO] Resolving dependencies... [DEBUG] Checking Strong Name... [DEBUG] Creating global .cctors... [DEBUG] Executing 'Name analysis' phase... [DEBUG] Building VTables &amp; identifier list... [DEBUG] Analyzing...  [INFO] Processing module 'LicenseManagerService.exe'... [DEBUG] Executing 'Invalid metadata addition' phase... [DEBUG] Executing 'Renaming' phase... [DEBUG] Renaming... [DEBUG] Executing 'Anti-debug injection' phase... [DEBUG] Executing 'Anti-dump injection' phase... [DEBUG] Executing 'Anti-ILDasm marking' phase... [DEBUG] Executing 'Encoding reference proxies' phase... [DEBUG] Executing 'Constant encryption helpers injection' phase... [DEBUG] Executing 'Resource encryption helpers injection' phase... [DEBUG] Executing 'Constants encoding' phase... [DEBUG] Executing 'Anti-tamper helpers injection' phase... [DEBUG] Executing 'Control flow mangling' phase... [DEBUG] Executing 'Post-renaming' phase... [DEBUG] Executing 'Anti-tamper metadata preparation' phase... [DEBUG] Executing 'Packer info extraction' phase...  [INFO] Writing module 'LicenseManagerService.exe'... [DEBUG] Encrypting resources...  [INFO] Finalizing...  [INFO] Packing... [DEBUG] Encrypting modules...  [INFO] Protecting packer stub... [DEBUG] Discovering plugins...  [INFO] Discovered 11 protections, 1 packers. [DEBUG] Resolving component dependency...  [INFO] Loading input modules...  [INFO] Loading 'LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe'...  [INFO] Initializing... [DEBUG] Building pipeline...  [INFO] Resolving dependencies... [DEBUG] Checking Strong Name... [DEBUG] Creating global .cctors... [DEBUG] Executing 'Name analysis' phase... [DEBUG] Building VTables &amp; identifier list... [DEBUG] Analyzing...  [INFO] Processing module 'LicenseManagerService.exe'... [DEBUG] Executing 'Packer info encoding' phase... [DEBUG] Executing 'Invalid metadata addition' phase... [DEBUG] Executing 'Renaming' phase... [DEBUG] Renaming... [DEBUG] Executing 'Anti-debug injection' phase... [DEBUG] Executing 'Anti-dump injection' phase... [DEBUG] Executing 'Anti-ILDasm marking' phase... [DEBUG] Executing 'Encoding reference proxies' phase... [DEBUG] Executing 'Constant encryption helpers injection' phase... [DEBUG] Executing 'Resource encryption helpers injection' phase... [DEBUG] Executing 'Constants encoding' phase... [DEBUG] Executing 'Anti-tamper helpers injection' phase... [DEBUG] Executing 'Control flow mangling' phase... [DEBUG] Executing 'Post-renaming' phase... [DEBUG] Executing 'Anti-tamper metadata preparation' phase... [DEBUG] Executing 'Packer info extraction' phase...  [INFO] Writing module 'LicenseManagerService.exe'... [DEBUG] Encrypting resources...  [INFO] Finalizing... [DEBUG] Saving to 'C:\\Users\\pash76\\AppData\\Local\\Temp\\ehwkjzxt.brh\\mqqtgvji.gxk\\LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe'... [DEBUG] Executing 'Export symbol map' phase...  [INFO] Finish protecting packer stub. [DEBUG] Saving to 'D:\\pash76\\Develop\\License_manager\\Confused\\LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe'... [DEBUG] Executing 'Export symbol map' phase...  [INFO] Done. Finished at 9:35, 0:03 elapsed.<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"fayl-proekta\">\u0424\u0430\u0439\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/blob\/master\/docs\/ProjectFormat.md\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. \u0412 \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0441\u0431\u043e\u0440\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c (\u0438\u043b\u0438 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c) \u043c\u043e\u0434\u0443\u043b\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u043c \u043a\u043e\u0434\u0430. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u043c\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043a\u043e\u0434\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Item-Signatures\">\u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b<\/a> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c. \u0412 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Expression-Functions\">\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Declarative-Obfuscation\">\u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/a> \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439 \u043a\u043e\u0434\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;project outputDir=&quot;.\\Confused&quot; baseDir=&quot;.\\&quot; xmlns=&quot;http:\/\/confuser.codeplex.com&quot;&gt;     &lt;rule pattern=&quot;true&quot; inherit=&quot;false&quot;&gt;         &lt;protection id=&quot;anti ildasm&quot; \/&gt;         &lt;protection id=&quot;anti tamper&quot; action=&quot;remove&quot; \/&gt;         &lt;protection id=&quot;constants&quot;&gt;             &lt;argument name=&quot;mode&quot; value=&quot;dynamic&quot; \/&gt;             &lt;argument name=&quot;decoderCount&quot; value=&quot;13&quot; \/&gt;             &lt;argument name=&quot;elements&quot; value=&quot;SIP&quot; \/&gt;             &lt;argument name=&quot;cfg&quot; value=&quot;false&quot; \/&gt;         &lt;\/protection&gt;         &lt;protection id=&quot;ctrl flow&quot; \/&gt;         &lt;protection id=&quot;anti dump&quot; action=&quot;remove&quot; \/&gt;         &lt;protection id=&quot;anti debug&quot; \/&gt;         &lt;protection id=&quot;invalid metadata&quot; action=&quot;remove&quot; \/&gt;         &lt;protection id=&quot;ref proxy&quot; \/&gt;         &lt;protection id=&quot;resources&quot;&gt;             &lt;argument name=&quot;mode&quot; value=&quot;dynamic&quot; \/&gt;         &lt;\/protection&gt;         &lt;protection id=&quot;rename&quot;&gt;             &lt;argument name=&quot;mode&quot; value=&quot;sequential&quot; \/&gt;         &lt;\/protection&gt;     &lt;\/rule&gt;     &lt;packer id=&quot;compressor&quot;&gt;         &lt;argument name=&quot;key&quot; value=&quot;dynamic&quot; \/&gt;         &lt;argument name=&quot;compat&quot; value=&quot;true&quot; \/&gt;     &lt;\/packer&gt;     &lt;module path=&quot;LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe&quot;&gt;         &lt;rule pattern=&quot;             match('UAVLicenseManager\\.CentOSSystemInfoProvider::ShellCommand.*')              or match(' ?LicenseManagerService\\.Program(::)?')             or match(' ?LicenseManagerService\\.UAVLicenseManagerService(::)?')              or (                 match(' ?UAVLicenseManager\\.License(::)?')                  and is-public()                  and (member-type('type') or member-type('field') or member-type('property'))                 )             or match(' ?UAVLicenseManager\\.LicenseKey(::)?')             or match(' ?UAVLicenseManager\\.LicenseOwner(::)?')             or match(' ?UAVLicenseManager\\.Location(::)?')             or match(' ?UAVLicenseManager\\.LicenseLimit(::)?')             &quot; inherit=&quot;true&quot;&gt;             &lt;protection id=&quot;rename&quot; action=&quot;remove&quot; \/&gt;         &lt;\/rule&gt;     &lt;\/module&gt; &lt;\/project&gt;<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"moduli-zaschity\">\u041c\u043e\u0434\u0443\u043b\u0438 \u0437\u0430\u0449\u0438\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u0412 ConfuserEx \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c <a href=\"https:\/\/github.com\/yck1509\/ConfuserEx\/wiki\/Protections\">\u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0437\u0430\u0449\u0438\u0442\u044b<\/a>. \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u0434\u0435\u0442\u0430\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0449\u0438\u0442\u0430 <strong>Name Protection<\/strong> \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 Reflection \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0422\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0430\u0432\u0438\u043b \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 mono, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c\u0438 \u0441 mono. \u041d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c, \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e.<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041c\u043e\u0434\u0443\u043b\u044c<\/th>\n<th>Windows<\/th>\n<th>Mono<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Anti Debug Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Anti Dump Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ay\/df\/rc\/aydfrcegdl3vjogpun7is3tiwcw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Anti IL Dasm Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Anti Tamper Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ay\/df\/rc\/aydfrcegdl3vjogpun7is3tiwcw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Compressor<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/> (\u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438)<\/td>\n<\/tr>\n<tr>\n<td>Constants Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/> (\u0440\u0435\u0436\u0438\u043c cfg \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)<\/td>\n<\/tr>\n<tr>\n<td>Control Flow Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Invalid Metadata Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ay\/df\/rc\/aydfrcegdl3vjogpun7is3tiwcw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Name Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Reference Proxy Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<tr>\n<td>Resources Protection<\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yv\/qe\/qd\/yvqeqdcxgqwnei6r0pgudggevkw.png\"\/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<h3 id=\"upakovschiki\">\u0423\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u0423\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a, \u043f\u043e\u043c\u0438\u043c\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 IL-\u043a\u043e\u0434. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432 dotPeek \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043b\u0438\u0448\u044c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043a\u043e\u0434 ConfuserEx. \u0411\u0435\u0437 \u0443\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0430, \u0432 dotPeek \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bl\/s1\/wi\/bls1wiys7ub5zxfens1gp5zbutg.png\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"kastomizaciya-zaschity\">\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b<\/h3>\n<p>  <\/p>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b ConfuserEx. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u043e\u0434\u044f\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u0430, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f ConfusedByAttribute. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0442\u0438\u043f \u0437\u0430\u0449\u0438\u0442\u044b \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0435-\u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u044b.<\/p>\n<p>  <\/p>\n<p><em>ConfuserEx\\src\\Confuser.Core\\ConfuserEngine.cs<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"cs\">static void Inspection(ConfuserContext context) {     context.Logger.Info(&quot;Resolving dependencies...&quot;);     foreach (var dependency in context.Modules                                       .SelectMany(module =&gt; module.GetAssemblyRefs().Select(asmRef =&gt; Tuple.Create(asmRef, module)))) {         try {             AssemblyDef assembly = context.Resolver.ResolveThrow(dependency.Item1, dependency.Item2);         }         catch (AssemblyResolveException ex) {             context.Logger.ErrorException(&quot;Failed to resolve dependency of '&quot; + dependency.Item2.Name + &quot;'.&quot;, ex);             throw new ConfuserException(ex);         }     }     context.Logger.Debug(&quot;Checking Strong Name...&quot;);     foreach (ModuleDefMD module in context.Modules) {         var snKey = context.Annotations.Get&lt;StrongNameKey&gt;(module, Marker.SNKey);         if (snKey == null &amp;&amp; module.IsStrongNameSigned)             context.Logger.WarnFormat(&quot;[{0}] SN Key is not provided for a signed module, the output may not be working.&quot;, module.Name);         else if (snKey != null &amp;&amp; !module.IsStrongNameSigned)             context.Logger.WarnFormat(&quot;[{0}] SN Key is provided for an unsigned module, the output may not be working.&quot;, module.Name);         else if (snKey != null &amp;&amp; module.IsStrongNameSigned &amp;&amp;                  !module.Assembly.PublicKey.Data.SequenceEqual(snKey.PublicKey))             context.Logger.WarnFormat(&quot;[{0}] Provided SN Key and signed module's public key do not match, the output may not be working.&quot;, module.Name);     }     var marker = context.Registry.GetService&lt;IMarkerService&gt;();     context.Logger.Debug(&quot;Creating global .cctors...&quot;);     foreach (ModuleDefMD module in context.Modules) {         TypeDef modType = module.GlobalType;         if (modType == null) {             modType = new TypeDefUser(&quot;&quot;, &quot;&lt;Module&gt;&quot;, null);             modType.Attributes = TypeAttributes.AnsiClass;             module.Types.Add(modType);             marker.Mark(modType, null);         }         MethodDef cctor = modType.FindOrCreateStaticConstructor();         if (!marker.IsMarked(cctor))             marker.Mark(cctor, null);     }     \/\/context.Logger.Debug(&quot;Watermarking...&quot;);     \/\/foreach (ModuleDefMD module in context.Modules) {     \/\/    TypeRef attrRef = module.CorLibTypes.GetTypeRef(&quot;System&quot;, &quot;Attribute&quot;);     \/\/    var attrType = new TypeDefUser(&quot;&quot;, &quot;ConfusedByAttribute&quot;, attrRef);     \/\/    module.Types.Add(attrType);     \/\/    marker.Mark(attrType, null);     \/\/    var ctor = new MethodDefUser(     \/\/        &quot;.ctor&quot;,     \/\/        MethodSig.CreateInstance(module.CorLibTypes.Void, module.CorLibTypes.String),     \/\/        MethodImplAttributes.Managed,     \/\/        MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName);     \/\/    ctor.Body = new CilBody();     \/\/    ctor.Body.MaxStack = 1;     \/\/    ctor.Body.Instructions.Add(OpCodes.Ldarg_0.ToInstruction());     \/\/    ctor.Body.Instructions.Add(OpCodes.Call.ToInstruction(new MemberRefUser(module, &quot;.ctor&quot;, MethodSig.CreateInstance(module.CorLibTypes.Void), attrRef)));     \/\/    ctor.Body.Instructions.Add(OpCodes.Ret.ToInstruction());     \/\/    attrType.Methods.Add(ctor);     \/\/    marker.Mark(ctor, null);     \/\/    var attr = new CustomAttribute(ctor);     \/\/    attr.ConstructorArguments.Add(new CAArgument(module.CorLibTypes.String, Version));     \/\/    module.CustomAttributes.Add(attr);     \/\/} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f .net \u043c\u043e\u0434\u0443\u043b\u044f ConfuserEx. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f <strong>koi<\/strong>.<br \/>  \u0418\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">ConfuserEx\\src\\Confuser.Protections\\Compress\\Compressor.cs ConfuserEx\\src\\Confuser.Runtime\\Compressor.cs ConfuserEx\\src\\Confuser.Protections\\Compress\\ExtractPhase.cs ConfuserEx\\src\\Confuser.Protections\\Compress\\StubProtection.cs<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"primery-rezultatov\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u0430 \u0431\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0430 (\u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 dotPeek). \u0424\u0430\u0439\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432\u044b\u0448\u0435.<\/p>\n<p>  <\/p>\n<h3 id=\"zaputyvanie-ispolnyaemogo-koda\">\u0417\u0430\u043f\u0443\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/h3>\n<p>  <\/p>\n<pre><code class=\"cs\">using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; [assembly: InternalsVisibleTo(&quot;LicenseManagerServiceTests&quot;)] namespace LicenseManagerService {     static class Program     {         \/\/\/ &lt;summary&gt;         \/\/\/ \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.         \/\/\/ &lt;\/summary&gt;         \/\/\/         static void Main()         {             ServiceBase[] ServicesToRun;             ServicesToRun = new ServiceBase[]             {                 new UAVLicenseManagerService()             };             ServiceBase.Run(ServicesToRun);         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 dotPeek<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jx\/5e\/uy\/jx5euyud2dim6d4gtlnxj36zexc.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u0438\u043f\u0430 LicenseManagerService.Program, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0430\u0432\u0438\u043b \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044c <strong>Name Protection<\/strong> (\u0438\u043c\u0435\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c). \u0412\u0438\u0434\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f <strong>Control Flow Protection<\/strong>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cs\">\/\/ Decompiled with JetBrains decompiler \/\/ Type: LicenseManagerService.Program \/\/ Assembly: LicenseManagerService, Version=1.0.5980.24716, Culture=neutral, PublicKeyToken=null \/\/ MVID: A6EB17CC-65EE-4E2D-B66C-24E166429A4A \/\/ Assembly location: D:\\pash\\Develop\\License_manager\\Confused\\LicenseManagerService\\bin\\x86\\Release\\LicenseManagerService.exe using System.Runtime.InteropServices; using System.ServiceProcess; namespace LicenseManagerService {   internal static class Program   {     private static void Main()     {       ServiceBase[] serviceBaseArray1 = new ServiceBase[1]       {         (ServiceBase) new UAVLicenseManagerService()       }; label_1:       int num1 = 1005209177;       ServiceBase[] serviceBaseArray2;       while (true)       {         int num2 = 1280737639;         uint num3;         switch ((num3 = (uint) (num1 ^ num2)) % 3U)         {           case 0U:             goto label_1;           case 1U:             serviceBaseArray2 = serviceBaseArray1;             num1 = (int) num3 * 1248105312 ^ 483770479;             continue;           default:             goto label_4;         }       } label_4:       Program.\\u200E\u206d\u202e\u202a\u206e\u200c\u206a\u200c\u206a\u202a\u200e\u202a\u200c\u202b\u202a\u206b\u202c\u206e\u200c\u206c\u206d\u202d\u202a\u200e\u202c\u206d\u206e\u206b\u200c\u202a\u206e\u200d\u206d\u200d\u200c\u206a\u206d\u202d\u206c\u202e(serviceBaseArray2);     }     static void \\u200E\u206d\u202e\u202a\u206e\u200c\u206a\u200c\u206a\u202a\u200e\u202a\u200c\u202b\u202a\u206b\u202c\u206e\u200c\u206c\u206d\u202d\u202a\u200e\u202c\u206d\u206e\u206b\u200c\u202a\u206e\u200d\u206d\u200d\u200c\u206a\u206d\u202d\u206c\u202e([In] ServiceBase[] obj0)     {       ServiceBase.Run(obj0);     }   } }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"zaschita-konstant-v-kode\">\u0417\u0430\u0449\u0438\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0432 \u043a\u043e\u0434\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"cs\">private readonly string ShellCommandNetworkAdapterMACAddress =     @&quot;ip -o link show | grep -m 1 'UP.*LOWER_UP.*ether\\|LOWER_UP.*UP.*ether' | sed -n 's\/.*ether \\(.*\\) brd.*\/\\1\/p' | tr -d '\\n[:blank:]'&quot;;<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xk\/az\/fx\/xkazfxfzbe8jstkey76pxwva6is.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0441 <strong>ShellCommand<\/strong>, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0430\u0432\u0438\u043b \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044c <strong>Name Protection<\/strong> (\u0438\u043c\u0435\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c). \u0412\u0438\u0434\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f <strong>Constants Protection<\/strong>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cs\">internal sealed class _ob : _qA {   private readonly string ShellCommandNetworkAdapterMACAddress = \\u003CModule\\u003E.\\u206E\u202c\u200c\u202d\u202d\u206f\u202c\u200f\u206d\u206d\u202e\u202c\u206c\u206c\u202c\u206b\u206b\u202a\u206e\u202e\u202b\u202d\u200c\u206e\u200c\u206c\u202c\u206a\u206d\u202d\u202a\u206d\u200e\u206a\u206b\u202e&lt;string&gt;(3331371713U);   private readonly string ShellCommandNetworkAdapterCaption = \\u003CModule\\u003E.\\u206F\u206b\u200c\u202c\u206f\u206e\u206d\u200d\u206e\u206e\u206b\u206c\u202b\u206f\u206c\u202d\u200d\u206a\u206c\u200c\u200f\u206c\u206f\u206f\u202a\u202c\u206a\u202b\u206e\u200e\u206c\u202d\u206b\u206d\u206c\u206c\u200e\u202e\u206f\u202e&lt;string&gt;(4243712535U);&lt;\/source&gt;<\/code><\/pre>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/524788\/\"> https:\/\/habr.com\/ru\/post\/524788\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0431\u043e\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0442\u043e\u0440\u0430 ConfuserEx 0.6.0 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430 .Net \u043f\u043e\u0434 Windows \u0438 Mono. \u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 2016 \u0433\u043e\u0434\u0443, \u043d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0442\u0435\u043c\u0430 \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441.<\/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-311928","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/311928","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=311928"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/311928\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=311928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=311928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=311928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}