ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ срСдства обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Если язык допускаСт алиасы, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π»Ρ прСобразования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массивов ΠΈ ΠΏΠΎΠ»ΡΠΌ структур ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ считываСтся ΠΈΠ»ΠΈ модифицируСтся сразу вСсь массив ΠΈΠ»ΠΈ вся структура. Для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ссылок Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС («ΠΊΠΎΠ½ΡΠ΅Ρ€Π²Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ срСдства обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Российский государствСнный ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ унивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности ΠšΡƒΡ€ΡΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅

«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-аппаратная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ»

Π½Π° Ρ‚Π΅ΠΌΡƒ:

«ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ»

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» студСнт

5 курса, Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠšΠ—Π˜ Π’5

ΠšΠΎΡ€ΡˆΠΈΠΊΠΎΠ² Н. Π‘.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»:

ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ:

Π₯ΠΎΡ€Π΅Π² П. Π‘ Москва

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π• Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π“Π»Π°Π²Π° 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, разновидности ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обфускации

1.1 ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

1.2 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ форматирования

1.3 ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

1.4 НСдостатки

1.5 Алгоритмы процСсса обфускации

1.6 ΠŸΡ€ΠΎΡ†Π΅ΡΡ дСобфускации

1.7 ΠžΡ†Π΅Π½ΠΊΠ° процСсса обфускации

Π“Π»Π°Π²Π° 2. ΠžΠ±Π·ΠΎΡ€ срСдств обфускации

2.1 ΠžΠ±Π·ΠΎΡ€ срСдств обфускации

2.2 Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ срСдств обфускации Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ

1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

2. Анализ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π’Π’Π•Π”Π•ΠΠ˜Π•

На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь, быстроС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ собствСнности, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ (ПП).

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π² Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π΅ врСмя, ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Π²Π°ΠΆΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ спСциализированного, ΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ПО) Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это позволяСт ΠΈΠΌ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ свой ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ΄, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ возмоТности Π΅Π³ΠΎ нСлСгального использования срСди ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ. Говоря ΠΈΠ½Ρ‹ΠΌΠΈ словами, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ, Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΡƒΡŽ копию ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΊΡƒΠΏΠΈΠ², Π½Π΅ Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΠ² Π΄Π΅Π½Π΅Π³ Π΅Ρ‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ являСтся обфускация, Π΄Π°Π»Π΅Π΅ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация, Ρ†Π΅Π»ΠΈ ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

К Π½Π°ΡΡ‚ΠΎΡΡ‰Π΅ΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²ΡƒΡ… дСсятков Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… обфускаторов (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ), срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΠ΅. Π Π°Π·Π²ΠΈΡ‚Ρ‹Π΅ обфускаторы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ обфускаторы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ прСобразования Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Ρ‘ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° классификация Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² обфускации.

Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ врСмя интСрСс ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ обфускации Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вырос. Появились ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚СорСтичСского обоснования Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ обфускации ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΡˆΠΈΡ‚Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΌ (ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, посвящСнныС обфускации, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², появились ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Ρ€ΠΈ-Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄), ΠΈ ΠΏΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ соотвСтствуСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ экономичСской цСлСсообразности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠΈΠ»ΡŒΠ½ΠΎ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€ΠΈ этом ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΎΡ‚ ΠΏΠΈΡ€Π°Ρ‚ства, ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ°Ρ‚Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΡ€Π°ΠΆΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ: основныС понятия ΠΈ Ρ†Π΅Π»ΠΈ ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ (ΠΎΡ‚ Π»Π°Ρ‚. obfuscare — Π·Π°Ρ‚Π΅Π½ΡΡ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌΠ½ΡΡ‚ΡŒ; ΠΈ Π°Π½Π³Π». obfuscate — Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ), ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° — ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ исходного тСкста ΠΈΠ»ΠΈ исполняСмого ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π²ΠΈΠ΄Ρƒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π°Π½Π°Π»ΠΈΠ·, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ дСкомпиляции.

Π—Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ (obfuscated) называСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Π½Π° Π²ΡΠ΅Ρ… допустимых для исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° для Π°Π½Π°Π»ΠΈΠ·Π°, понимания ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Запутанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° получаСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ примСнСния ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (obfuscating transformations).

Π¦Π΅Π»ΠΈ обфускации.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² прСслСдуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π΅Π»ΠΈ:

ДСмонстрация Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… возмоТностСй языка ΠΈ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ программиста (Ссли производится Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° Π½Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами) ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ†Π΅Π»ΡŒΡŽ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык) ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ спама. Π‘ΠΏΠ°ΠΌΠΎΠ²ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° JavaScript, выводящий Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ; обфускация ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.

Π—Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠ΅ дСкомпиляции/ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡ врСдоносных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Ρ†Π΅Π»ΡŒΡŽ прСдотвращСния обнаруТСния врСдоносной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π—Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠ΅ дСкомпиляции ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Ρ†Π΅Π»ΡŒΡŽ прСдотвращСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° DRM ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ.

ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ авторских ΠΏΡ€Π°Π² программистов ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ авторства.

ΠŸΡ€ΠΈ создании Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΡ‚Π°Π²Π»ΡŽ ΠΏΠ΅Ρ€Π΅Π΄ собой Ρ†Π΅Π»ΡŒ, Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ понятиС ΠΊΠ°ΠΊ «ΠžΠ±Ρ„ускация», ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹, привСсти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ расскаТу ΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°Ρ… обфускации, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ€Π°Π±ΠΎΡ‚ программиста ΠΈΠ· Π‘Π°Π½ΠΊΡ‚-ΠŸΠΈΡ‚Π΅Ρ€Π±ΡƒΡ€ΠΊΠ° с ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π΅ΠΌ Antelle (ΠΆΠ΅Π»Π°Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ своих ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…), ΠΎΠ±Π·ΠΎΡ€ срСдств обфускации взят ΠΈΠ· Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π²Ρ‹Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ источник ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€ (Π² ΡΠΏΠΈΡΠΊΠ΅ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ ΠΏΠΎΠ»Π½ΡƒΡŽ ссылку Π½Π° ΠΎΠ±Π·ΠΎΡ€ Antelle). Π’Π°ΠΊ ΠΆΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ расскаТу ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π“Π»Π°Π²Π° 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, разновидности ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обфускации

1.1 ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π—Π°Π΄Π°Ρ‡ΠΈ запутывания ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° аспСкта:

— Ρ‚СорСтичСский;

— ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ.

ВСорСтичСский аспСкт — Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² прСобразования Π³Ρ€Π°Ρ„Π°, ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΈΠ»ΠΈ трансформации Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ слоТности ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ия.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² запутывания (распутывания), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², эмпиричСский ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², эмпиричСский Π°Π½Π°Π»ΠΈΠ· устойчивости ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ Ρ‚. Π΄.

Π’ Π½Π°ΡΡ‚оящСС врСмя ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСны языки программирования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Java, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… «ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ» Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся Π½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° процСссоров, Π° ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎ-Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС. Π—Π°Π΄Π°Ρ‡Π° дСкомпиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСдставлСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ дСкомпиляция ΠΈΠ· ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. БущСствуСт большоС число дСкомпиляторов для языка Java ΠΊΠ°ΠΊ распространяСмых свободно, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΡ…, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ нСсанкционированноС использованиС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡŽ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΡΡ‚ΠΈΠΌ рассматриваСтся Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π£ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²ΡƒΡ… дСсятков Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΉ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΠ΅. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ обфускаторы ΡƒΠ΄Π°Π»ΡΡŽΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ символов ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… классов ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ исходныС ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² бСссмыслСнными ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ (Π΄ΠΎ 50%), Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возрастаСт, поэтому Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π‘ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹Π΅ обфускаторы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ прСобразования Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Ρ‘ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π½ΠΈΡ…, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Ρ‹ эмпиричСски ΠΈ ΡΠ»Π°Π±ΠΎ обоснованы тСорСтичСски.

Π’Π°ΠΊ ΠΆΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅, это ΠΊΠΎΠ³Π΄Π° написанный ΠΊΠΎΠ΄, Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚, Π° Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π½Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ свСдСниями Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, логичСскими связками.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° соотвСтствовала ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ условиям.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая для любого класса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π»ΡŽΠ±ΠΎΠ³ΠΎ свойства этих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ являСтся — Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ прСобразования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π³Ρ€ΡƒΠΏΠΏ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ½ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного тСкста;

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ форматирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшний Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ структуру Π΅Ρ‘ Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния.

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста:

Код Π΄ΠΎ ΠΎΠ±Ρ„ускации:

int COUNT = 100;

float TAX_RATE = 0.2;

for (int i=0; i

{

tax[i] = orig_price[i] * TAX_RATE;

price[i] = orig_price[i] + tax[i];

}

Код послС обфускации:

for (int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a]; }

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ машинного ΠΊΠΎΠ΄Π° Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, обфускация Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ машинного ΠΊΠΎΠ΄Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ (Π° Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚) ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½Π° примСняСтся Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° рСгистрационного ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ обфускации машинного ΠΊΠΎΠ΄Π° — вставка Π² Π½Π΅Π³ΠΎ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… конструкций (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ or ax, ax)

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C++ ΠΈ ΠŸΠ°ΡΠΊΠ°Π»ΡŒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, язык Java, NetP ΠΈ ΡΠ·Ρ‹ΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ исходный ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ восстановлСния исходного ΠΊΠΎΠ΄Π°. По ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, для этих языков примСняСтся обфускация ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ HTML ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ спамСрам: Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ способСн ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ HTML, тСкст читаСтся, Π½ΠΎ Π°Π½Ρ‚испамовый Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ HTML-Ρ„Π°ΠΉΠ»ΠΎΠΌ, пропускаСт Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС, Π½Π΅ Π²ΠΈΠ΄Ρ Π² Π½Ρ‘ΠΌ Π·Π°ΠΏΡ€Π΅Ρ‚Π½ΠΎΠΉ строки.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ обфусцированного HTML:

Π’ΠΈΠ°Π³Ρ€Π°

ΠŸΡ€ΠΈ просмотрС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ слово «Π’ΠΈΠ°Π³Ρ€Π°», Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΅Π³ΠΎ Π½Π΅Ρ‚.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π³Ρ€Π°Ρ„ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ характСристика ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ вставка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (function inlining) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ подставляСтся Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся стандартным для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… компиляторов. Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ одностороннСС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ автоматичСски Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ вставлСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Вынос Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (function outlining) Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дополняСт Π΅Π³ΠΎ. НСкоторая Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выдСляСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠŸΡ€ΠΈ нСобходимости ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΎ компилятором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ являСтся слоТным для запутыватСля ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ провСсти Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСпрозрачныС ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ (opaque predicates) Основной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния являСтся Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅ΡˆΡ‘Π²Ρ‹ΠΌΠΈ, Π½ΠΎ ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²Ρ‹ΠΌΠΈ. Для обСспСчСния устойчивости ΠΌΠ½ΠΎΠ³ΠΈΠ΅ прСобразования ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ². Π‘ΠΈΠ»Π° Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ зависит ΠΎΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ v ΡΠ²Π»ΡΠ΅Ρ‚ся Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ, Ссли сущСствуСт свойство

ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π°ΠΏΡ€ΠΈΠΎΡ€ΠΈ извСстно Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Ρ‚рудноустанавливаСмо послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ. Аналогично, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ P Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ, Ссли Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ извСстно Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Ρ‚рудноустанавливаСмо послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.

НСпрозрачныС ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€Ρ‘Ρ… Π²ΠΈΠ΄ΠΎΠ²:

PF — ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «Π»ΠΎΠΆΡŒ» ;

PT — ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «ΠΈΡΡ‚ΠΈΠ½Π°» ;

P? — ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ±Π° значСния, ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запутывания Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° извСстно.

ИспользованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ создаваСмыС динамичСскиС структуры. Π’ ΡΡ‚ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ссылочных структур Π΄Π°Π½Π½Ρ‹Ρ… (списков, Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²), ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ указатСлями Π½Π° ΡΡ‚ΠΈ структуры, ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ булСвских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ слоТных булСвских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эквивалСнтных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ true. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ k ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… булСвских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x1… xk ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… тоТдСство

. Π”Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эквивалСнтных алгСбраичСских ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‡Π°ΡΡ‚ΡŒ скобок (ΠΈΠ»ΠΈ всС) Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся искомый Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚.

ВнСсСниС нСдостиТимого ΠΊΠΎΠ΄Π° (adding unreachable code). Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ внСсСны Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ Π²ΠΈΠ΄ΠΎΠ² PF ΠΈΠ»ΠΈ PT, Π²Π΅Ρ‚ΠΊΠΈ условия, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ «ΠΈΡΡ‚ΠΈΠ½Π°» Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΈ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ «Π»ΠΎΠΆΡŒ» Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся, называСтся нСдостиТимым ΠΊΠΎΠ΄ΠΎΠΌ. Π­Ρ‚ΠΈ Π²Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ вычислСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполняСмый ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, собраны ΠΈΠ· Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚ΠΎΠΉ ΠΆΠ΅ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ВнСсСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (adding dead code). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅Π΄ΠΎΡΡ‚ΠΈΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΡ‘Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ выполняСтся, Π½ΠΎ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ‚ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВнСсСниС ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (adding redundant code). Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° выполняСтся, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ выполнСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ совсСм ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ вычисляСтся Π»ΠΈΠ±ΠΎ константноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΆΠ΅ вычислСнноС Ρ€Π°Π½Π΅Π΅.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ алгСбраичСскиС прСобразования ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ†Π΅Π»Ρ‹ΠΌΠΈ значСниями, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° накоплСния ошибки вычислСний. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ sin2x+cos2x ΠΏΡ€ΠΈ вычислСнии Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π΅ практичСски Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π°ΡΡ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ сводимого Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΊ Π½Π΅ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΌΡƒ (transforming reducible to non-reducible flow graph). Когда Ρ†Π΅Π»Π΅Π²ΠΎΠΉ язык (Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык) Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»Π΅Π½, Ρ‡Π΅ΠΌ исходный, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСобразования, «ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‰ΠΈΠ΅» структурС исходного языка. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ инструкций Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ языка, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΉ исходного языка.

НапримСр, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java содСрТит ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ go to, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ Π² ΡΠ·Ρ‹ΠΊΠ΅ Java ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ go to ΠΎΡ‚сутствуСт. Π“Ρ€Π°Ρ„Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ всСгда сводимыми, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΈ Π½Π΅ΡΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π³Ρ€Π°Ρ„Ρ‹.

МоТно ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трансформируСт сводимыС Π³Ρ€Π°Ρ„Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² Π½Π΅ΡΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π³Ρ€Π°Ρ„Ρ‹. НапримСр, Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ‚рансформации структурного Ρ†ΠΈΠΊΠ»Π° Π² Ρ†ΠΈΠΊΠ» с ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ².

УстранСниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (eliminating library calls). Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java сущСствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСмантика Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстна, Ρ‚Π°ΠΊΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° усугубляСтся Π΅Ρ‰Ρ‘ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ссылки Π½Π° ΠΊΠ»Π°ΡΡΡ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΈ ΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ искаТСны.

Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… языках эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° стоит ΠΌΠ΅Π½Π΅Π΅ остро, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ скомпонованы статичСски вмСстС с ΡΠ°ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠΌΡ‘Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (function interleaving). ИдСя этого Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ прСобразования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Бписки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² исходных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ, ΠΈ ΠΊ Π½ΠΈΠΌ добавляСтся Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая функция Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выполняСтся.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (function cloning). ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ изучаСтся сигнатура Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎ, ΠΊΠ°ΠΊ эта функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π² ΠΊΠ°ΠΊΠΈΡ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ вызываСтся. Анализ контСкста использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π Π°Π·Π²Ρ‘Ρ€Ρ‚ΠΊΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² (loop unrolling). Π Π°Π·Π²Ρ‘Ρ€Ρ‚ΠΊΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² примСняСтся Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… компиляторах для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡ… Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. Π Π°Π·Π²Ρ‘Ρ€Ρ‚ΠΊΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° размноТаСтся Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·. Если количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° извСстно Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ компиляции, Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Π Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² (loop fission). Π Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» со ΡΠ»ΠΎΠΆΠ½Ρ‹ΠΌ Ρ‚Π΅Π»ΠΎΠΌ разбиваСтся Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² с ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ Ρ‚Π΅Π»Π°ΠΌΠΈ ΠΈ Ρ Ρ‚Π΅ΠΌ ΠΆΠ΅ пространством итСрирования.

РСструктуризация Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… шаблонов для Ρ†ΠΈΠΊΠ»ΠΎΠ², условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‚. Π΄. Π΄Π°Ρ‘Ρ‚ Ρ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, ΠΏΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΡΡ конструкциям Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚ΠΊΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π° Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° для выдСлСния ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡΠ²Ρ‘Ρ€Ρ‚ΠΊΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΌΠ΅Ρ€Ρ‹ противодСйствия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π³Ρ€Π°Ρ„ ΠΊ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠΌΡƒ («ΠΏΠ»ΠΎΡΠΊΠΎΠΌΡƒ») Π²ΠΈΠ΄Ρƒ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° Π½ΠΈΠΌΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, располоТСнныС Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ диспСтчСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ вычисляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π½Π° Π½Π΅Π³ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. ВСхничСски это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано ΠΏΠ΅Ρ€Π΅Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ всСх Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ state, которая содСрТит Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ исполняСмого Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. Запутанная функция вмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if, for ΠΈ Ρ‚. Π΄. Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch, располоТСнный Π²Π½ΡƒΡ‚Ρ€ΠΈ бСсконСчного Ρ†ΠΈΠΊΠ»Π°.

Локализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создаётся свой Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ВсС использования Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠ΅ (connective) Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡŽ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большого числа Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ-Π΄Π²ΡƒΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ области дСйствия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΡ‹ΡΠ»Ρƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ пытаСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, насколько ΠΌΠΎΠΆΠ½ΠΎ. НапримСр, вынося Π±Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ вынося Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π° ΡΡ‚атичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΡƒΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ‚ся Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² Ρ†Π΅Π»ΠΎΠΌ) Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½ΠΎ Π΄Π»Ρ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ‚атичСскими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π’ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках обфусцированный ΠΊΠΎΠ΄ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС мСста, Ρ‡Π΅ΠΌ исходный, ΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ выполняСтся быстрСС, Ρ‡Π΅ΠΌ исходный. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ обфускаторы Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ константы числами, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного тСкста провСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

1.2 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ форматирования

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обфускация дСкомпиляция Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ К ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌ форматирования относятся ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΡ‘Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ выполняСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΈ прСобразования Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ исходноС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСряСтся Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ инструмСнта для автоматичСского форматирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, indent для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ).

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… становятся нСвосстановимы.

ИзмСнСниС ΠΈΠΌΡ‘Π½ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сСмантичСского Π°Π½Π°Π»ΠΈΠ·Π° (привязки ΠΈΠΌΡ‘Π½) Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ИзмСнСниС ΠΈΠΌΡ‘Π½ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ привязки ΠΈΠΌΡ‘Π½ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ компиляции Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… связСй. ИмСна, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π²ΠΎ Π²ΡΠ΅Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… компиляции ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚.

1.3 ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ запутывания ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ.

Π’ Ρ€Π°Π±ΠΎΡ‚Π°Ρ… Π§. Π’Π°Π½Π³[22],[23] прСдлагаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ запутывания, ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся Π΅Π³ΠΎ рСализация Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π΅ для запутывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ запутывания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ввСдСния «Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€Π°» Π² Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ прСдлагаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ запутывания, основанный Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… прСобразованиях: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ разбиваСтся Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части (Ρ‚. Π½. piece) ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ся ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ€Π°Π·. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ, ΠΈ Π΄Π»Ρ связывания Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ. Π”Π°Π»Π΅Π΅ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ вводится ΠΌΡ‘Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Ρ‚ΠΎΠΉ ΠΆΠ΅ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ (ΠΏΡ€ΠΈ условии отсутствия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом). Π”Π°Π»Π΅Π΅ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² собираСтся новая функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ диспСтчСр. ДиспСтчСр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½ΠΎΠΌΠ΅Ρ€ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈ Π½Π°Π±ΠΎΡ€ булСвских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… для вычислСния условий ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠŸΡ€ΠΈ этом ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… эквивалСнтных Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ клонирования. ВыраТая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ булСвской Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° статичСского Π°Π½Π°Π»ΠΈΠ·Π° диспСтчСра Π±ΡƒΠ΄Π΅Ρ‚ PSPACE-ΠΏΠΎΠ»Π½Π°. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ описываСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ запутывания, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΈ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ систСмС.

Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚Π΅Π»ΠΈ для языка Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Zelix KlassMaster, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сочСтаниС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ: ΠΈΠ·. class-Ρ„Π°ΠΉΠ»ΠΎΠ² удаляСтся вся отладочная информация, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…; классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ичСски нСосмыслСнныС ΠΈΠΌΠ΅Π½Π°; Π³Ρ€Π°Ρ„ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразовываСтся ΠΊ Π½Π΅ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΌΡƒ Π³Ρ€Π°Ρ„Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΡΠ·Ρ‹ΠΊ Java.

1.4 НСдостатки К ΠΌΠΈΠ½ΡƒΡΠ°ΠΌ обфускации ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚Π°ΠΊΠΈΠ΅ нСдостатки ΠΊΠ°ΠΊ:

— ΠŸΠΎΡ‚Сря гибкости ΠΊΠΎΠ΄Π°. Код послС обфускации ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ зависимым ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ компилятора.

— Π’рудности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ Π΄Π°Ρ‘Ρ‚ постороннСму Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ Π½Π΅ Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ приходится ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ обфускатор.

— ΠΠ΅Π΄ΠΎΡΡ‚аточная Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ Π² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌ внСдрСния Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ.

1.5 Алгоритмы процСсса обфускации

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ осущСствлСния процСсса обфускации, начиная ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΡ… (абстрактных) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² процСсса обфускации ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ создавались Π² ΡΠΎΠΎΡ‚вСтствии с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ями Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ языка программирования, ΠΈ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ нСпосрСдствСнно ΠΏΠΎΠ΄ языки программирования высокого уровня. НиТС прСдставлСно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ описаниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ….

Алгоритм ΠšΠΎΠ»Π±Π΅Ρ€Π³Π° («Collberg`s algorithm»). [6],[7],[8],[9],[10]

Π”Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ значСниями:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Π» состоящая ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ…) Ρ„Π°ΠΉΠ»ΠΎΠ² «{Π‘1,Π‘2}» .

стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ «{L1,L2}» .

Π½Π°Π±ΠΎΡ€ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… процСссов «Π’{Π’1,Π’2}» .

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° «S», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ извлСкаСтся ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π», ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСпосрСдствСнно Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ трансформации.

Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ «Π•{Π•1,Π•2}» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ примСнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… процСссов «{Π’1,Π’2}» ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ΠΊΠΎΠ΄Π° «S» .

Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ «I{I1,I2}» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° «S», ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΡΡ‚ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «RequireObfuscation» (Ρ‡Π΅ΠΌ «S» Π²Π°ΠΆΠ½Π΅Π΅ Ρ‚Π΅ΠΌ эта пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

Π΄Π²Π΅ числовыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ «AcceptCost» > 0, «RequireObfuscation» > 0, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠΌ максимальном ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ систСмных рСсурсов ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ «Π» послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° подвСргнСтся обфускации, Π° Π²Ρ‚орая пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ уровня осущСствлСния обфускации (Ρ‡Π΅ΠΌ Π²Π°ΠΆΠ½Π΅Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° «S», Ρ‚Π΅ΠΌ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС).

Алгоритм ΠšΠΎΠ»Π±Π΅Ρ€Π³Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° элСмСнтов «{Π‘1,Π‘2}» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π» .

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ «{L1,L2}» .

ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΈΠ΅ обфускации Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ «Π», ΠΏΡƒΡ‚Π΅ΠΌ выдСлСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° «S» ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивного процСсса трансформации для Π½Π΅Π³ΠΎ. Π­Ρ‚ΠΎΡ‚ этап повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, достигнут Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ обфускации «RequireObfuscation» ΠΈΠ»ΠΈ допустимоС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ рСсурсов «AcceptCost» .

ГСнСрация трансформируСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π`» .

Алгоритм ΠšΠΎΠ»Π±Π΅Ρ€Π³Π° считаСтся ΠΎΠ±Ρ‰ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ осущСствлСния процСсса обфускации (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ обфускации), Π½ΠΈΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн Π±ΠΎΠ»Π΅Π΅ спСциализированный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ осущСствлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² обфускации, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ обфускации управлСния.

Chenxi Wang`s Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня. ΠŸΡ€ΠΎΡ†Π΅ΡΡ обфускации ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… этапов:

созданиС Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Π³Ρ€Π°Ρ„ задаётся мноТСством Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎΠΌ связСй ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… ΠΈΡ…), послС Ρ‡Π΅Π³ΠΎ Π³Ρ€Π°Ρ„ разбиваСтся, ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ цикличСских конструкций Π² Π½Π΅ΠΌ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° «if (условиС) goto» .

нумСрация всСх Π±Π»ΠΎΠΊΠΎΠ² Π² Π³Ρ€Π°Ρ„Π΅, ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «swVar») хранящСй Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ выполняСмого Π±Π»ΠΎΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° ΠΊ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠΌΡƒ («ΠΏΠ»ΠΎΡΠΊΠΎΠΌΡƒ»)

Π’Ρ‹ΡˆΠ΅ описанный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° обфускации («Chenxi Wang`s algorithm») являСтся Π½Π΅ ΡΠΈΠ»ΡŒΠ½ΠΎ устойчивым, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ выполняСмый Π±Π»ΠΎΠΊ, Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ (ΠΎΠ½ Π² Π½Π°ΡˆΠ΅ΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «swVar»). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ устойчивости вводят массив (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «@gg»), содСрТащий ΠΏΠΎΠΌΠΈΠΌΠΎ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ², Π½Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запись «$swVar = S6», ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ «$swVar = $gg[$gg[1] + $gg[3]]» .

1.6 ΠŸΡ€ΠΎΡ†Π΅ΡΡ дСобфускации

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡƒ дСобфускации ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ процСсс ΠΏΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½ΠΎΠΉ (prevent) обфускации.

ΠŸΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½Π°Ρ обфускация ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для прСдотвращСния примСнСния Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ дСобфускаторов, Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств дСобфускации.

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΊ ΠΏΡ€ΠΎΡ†Π΅ΡΡΡƒ дСобфускации ΠΌΠΎΠΆΠ½ΠΎ отнСсти процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π°, Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ стСпСни, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ процСссу обфускации.

Π’ ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, поэтому Π² Ρ‡Π°ΡΡ‚Π½Ρ‹Ρ… случаях ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ противопоставлСния процСссу дСобфускации.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ компиляции исходного ΠΊΠΎΠ΄Π°, автоматичСски ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, поэтому Ссли обфускация осущСствляСтся Π½Π°Π΄ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (обфускация высокого уровня), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ опрСдСлСнная Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ послС, компиляции ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒΡΡ. Если ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΉ исходный ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ компиляции), ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ осущСствлСнного процСсса обфускации, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

К ΠΏΡ€ΠΎΡ†Π΅ΡΡΡƒ дСобфускации, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ дСкомпиляции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт, имСя Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ схоТСС исходноС прСдставлСниС этого ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ понятСн Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс рСвСрсивной ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ. НиТС прСдставлСн простой ΠΎΠ±Ρ€Π°Π·Π΅Ρ† классификации ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² процСсса дСобфускации:

— Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… конструкций (ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ²), статичСский Π°Π½Π°Π»ΠΈΠ·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ слоТСн;

— ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнны Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ, это ΠΊΠΎΠ³Π΄Π° бСрСтся нСсколько ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… процСсс обфускации ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сравнСниС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΡ… ΠΊΠΎΠ΄Π°, для выявлСния вставлСнного Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ осущСствлСния обфускации лишнСго ΠΊΠΎΠ΄Π°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ поиска Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных конструкций, примСняСмых Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ обфускации;

— Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… (Π»ΠΈΡˆΠ½ΠΈΡ…) участков ΠΊΠΎΠ΄Π°;

— ΡΡ‚атистичСский Π°Π½Π°Π»ΠΈΠ·, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΡƒΡ‚Π΅ΠΌ выдСлСния ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ изучСния Π² Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π΅Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Π΅Π³ΠΎ выполнСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ всСгда ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

— Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, основываСтся Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, массивы).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ дСобфускации, связаны с Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ количСством вычислСний, ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

1.7 ΠžΡ†Π΅Π½ΠΊΠ° процСсса обфускации

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния эффСктивности примСнСния Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ процСсса обфускации, ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ.

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ принято Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹: аналитичСскиС ΠΈ ΡΠΌΠΏΠΈΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅. АналитичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€Π΅Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°Ρ…, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… насколько эффСктивСн Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ процСсс обфускации:

Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ — ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ слоТности осущСствлСния рСвСрсивной ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΌ процСсс обфускации.

Π­Π»Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ — ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ Π½Π°ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ процСсс обфускации, Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ дСобфускаторов.

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ прСобразования — позволяСт ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, насколько большС трСбуСтся систСмных рСсурсов для выполнСния ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ процСсс обфускации, Ρ‡Π΅ΠΌ для выполнСния ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ЭмпиричСскиС ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Ρ‚Π°ΠΊΠΎΠΉ вопрос, Ρ‚.ΠΊ. ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡΡ‚атистичСских Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ исслСдований. Для провСдСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… исслСдований Π½ΡƒΠΆΠ½Π° Π³Ρ€ΡƒΠΏΠΏΠ° людСй (ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ…, с Ρ€Π΅Π²Π΅Ρ€ΡΠΈΠ²Π½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ΅ΠΉ), Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² обфускации.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ исслСдования Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΡΠ΅Π±Ρ минимальноС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π³Ρ€ΡƒΠΏΠΏΠ΅ людСй, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² обфускации.

Π“Π»Π°Π²Π° 2. ΠžΠ±Π·ΠΎΡ€ срСдств обфускации

2.1 ΠžΠ±Π·ΠΎΡ€ срСдств обфускации Π’ ΠΎΠ±Π·ΠΎΡ€Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ описаниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… обфускаторов.

VMWare ThinApp [25]

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ‚ΠΎΡ€, ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, внСдряя Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки .NET, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² JIT-компиляции.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Π±Π΅Π· установлСнного .NET Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π΅. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ прилоТСния — 10.50 ΠœΠ‘, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Бтоят эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎ. Но, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Π½Π° PostBuild ходят кряки (Π΄Π°ΠΆΠ΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ). ВСроятно, Π² ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… Π΅ΡΡ‚ΡŒ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ распаковщики.

Π’ΠΎΠΎΠ±Ρ‰Π΅ VMWare ThinApp ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ для создания ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… вСрсий ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ сТимая ΠΈΡ… Π΄ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

Salamander .NET [27]

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ прилоТСния, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ VMWare, Π½ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом, ΠΏΡ€ΠΈ обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ (ΡƒΡ€Π΅Π·Π°Π΅Ρ‚) ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ видоизмСнят Π² ΠΊΠΎΠ΄Π΅ ссылки Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎ ΠΊΠΎΠ΄Π΅.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» описания:

Salamander .NET Linker and mini-deployment tool allows you to link .NET assemblies together into a single file, and to deploy your application without installation of the whole Microsoft .NET Framework. The linker selectively links MSIL code putting together only the required classes and methods, and it is capable of linking into the Microsoft .NET framework class libraries. The mini-deployment tool then builds a minimum set of the Microsoft .NET runtime to ship with your application. This usually results in installation size of a few mega bytes, rather than tens of mega bytes, and the installation takes much less time without rebooting machines. The mini-deployed application can be launched directly from a CD, absolutely without copying files or adding registry entries. Starting from .NET 2.0, a native compilation feature will be introduced to compile all managed assemblies into x86 machine code, and thus improves performance and stops disassembling and decompilation. Not even a single MSIL instruction will be ever delivered to your customers.

There is one problem none of the current obfuscators address, that is, no matter how good the obfuscation is, there are system library calls and other external references scattered over in your code (see red in below). Since these calls are external references, obfuscators will have to leave them unchanged. However, these references help a lot to understand the decompiled code, because they are well documented and public APIs. The linker removes or reduces such public APIs by linking the framework APIs into your own code, and thus makes your code much more difficult to decompile after obfuscation. Below shows sample MSIL code before and after the linker is used.

before: (no obfuscators are able to rename the following code in red, since they are external public

APIs)

IL_0000: ldarg.0

IL_0001: call instance void [System.Windows.Forms]System.Windows.Forms.Form:.ctor ()

IL_0006: ldarg.0

IL_0007: newobj instance void [System.Windows.Forms]System.Windows.Forms.TextBox:.ctor ()

IL_000c: stfld class [System.Windows.Forms]System.Windows.Forms.TextBox A. A:A

IL_0011: ldarg.0

IL_0012: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox A. A:A

IL_0017: call valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color:get_Cyan ()

IL_001c: callvirt instance void [System.Windows.Forms]System.Windows.Forms.TextBoxBase:set_BackColor (valuetype [System.Drawing]System.Drawing.Color)

IL_0021: ldarg.0

after: (absolutely no clue Windows. Forms APIs are used, a high obstacle for a hacker to understand this

junk)

IL_0000: ldarg.0

IL_0001: call instance void a. A:.ctor ()

IL_0006: ldarg.0

IL_0007: newobj instance void D. c:.ctor ()

IL_000c: stfld class D. c A.A:A

IL_0011: ldarg.0

IL_0012: ldfld class f.aA.A:A

IL_0017: call valuetype a. B ()

IL_001c: callvirt instance void D. c (valuetype g. e)

IL_0021: ldarg.0

DotFuscator [26]

DotFuscator — этот ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстСн Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ .Net, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Visual Studio .Net 2003.

Π”Π°Π½Π½Ρ‹ΠΉ обфускатор являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния. Однако Π±Π΅Π΄Π½Ρ‹ΠΉ интСрфСйс ΠΈ, ΠΏΠΎΡ€ΠΎΠΉ, Π½Π΅ ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹Π΅ настройки Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ слоТным для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Одним ΠΈΠ· Π΅Π³ΠΎ плюсов являСтся интСграция с Visual Studio .Net.

2.2 Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ срСдств обфускации БСсплатныС обфускаторы вСсьма слабыС ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для простого пСрСимСнования. О control flow Π·Π½Π°ΡŽΡ‚ ΠΈΠ· Π½ΠΈΡ… лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅;

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ вСсьма Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (control flow, MSIL encryption) ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ $ 500;

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ стоят ΠΎΠΊΠΎΠ»ΠΎ $ 5000, Π½ΠΎ ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ распаковщики. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²Π·Π»ΠΎΠΌΠ°Π½Ρ‹.

Π’Π·Π»ΠΎΠΌΠ°Π»ΠΈ обфускатор — Π·Π½Π°Ρ‡ΠΈΡ‚ поняли Π΅Π³ΠΎ систСму Π·Π°Ρ‰ΠΈΡ‚Ρ‹. На ΠΏΠΎΠΌΠΎΠΉΠΊΡƒ Ρ‚Π°ΠΊΠΎΠΉ обфускатор.

Π•ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊΠΎΠ² — сборка ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ€Π°ΡΡˆΠΈΡ„ровываСтся Π½Π° Π»Π΅Ρ‚Ρƒ. Π’Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ Ρ‚Π°ΠΊΡƒΡŽ сборку просто. Записи Π² Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ΅ 2.1. ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ.

Π’Π°Π±Π»ΠΈΡ†Π° 2.1. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°, срСдств обфускации, ΠΈΡ… ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ процСнтная ΠΎΡ†Π΅Π½ΠΊΠ° надСТности ΠΏΡ€ΠΈ использовании.

НазваниС

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ $

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ΠžΡ†Π΅Π½ΠΊΠ°

%

NET Reactor

Π₯ΠΎΡ€ΠΎΡˆΠΎ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π·Π»ΠΎΠΌΠ°, ΠΈΠΌΠ΅Π΅Ρ‚ распоковщик.

{SmartAssembly}

Π’Π·Π»ΠΎΠΌΠ°Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚.

Assemblur

free

НСт смысла ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, практичСски Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Babel

Π¨ΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ срСдний.

BitHelmet

НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, постоянно Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ошибки.

C# Source Code Obfuscator

Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ .Net — Π½Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»Π΅Π½

CilSecure

>1000

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π½Π΅Ρ‚ Ρ‚Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии, стоит Π΄ΠΎΡ€ΠΎΠ³ΠΎ.

CodeVeil

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ антивирусами, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

CodeWall

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ стоит ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹Ρ… Π΄Π΅Π½Π΅Π³.

Decompiler.NET

Компания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии Ρ‚Ρ€Π΅Ρ… Π»Π΅Ρ‚.

DeepSea

Π”Π΅Π»Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТно.

DesaWare

НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.NET 4.0

DNGuard HVM

ΠŸΡ€ΠΈ установки ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ² Π² Ρ€Π°Π±ΠΎΡ‚Π΅

Dotfuscator

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

dotNetProtector

ДобавляСт dll Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ.

Eazfuscator.NET

free

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ».

Goliath.NET

Π½Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄

NetOrbiter

free

Π”Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠ΄, добавляСт ΠΊ ΠΊΠΎΠ΄Ρƒ свою запись

Obfuscar

free

Π’Π°ΠΊ ΠΆΠ΅ просто ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚

Obfuscator.NET

НС Ρ€Π°Π±ΠΎΠ°Π΅Ρ‚.

PCGuard for .NET

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Phoenix Protector

free

НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚.NET 3.5

Salamander.NET

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΏΠΎΡΡ‚оянно Π²Ρ‹Π΄Π°Π΅Ρ‚ ошибки

SharpObfuscator

free

НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ

Skater.NET

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся

Spices.NET

Π¨ΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ вСсь ΠΊΠΎΠ΄ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

VMWare ThinApp

>5000

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ обфускатор, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Xenocode PostBuild

>1000

Π’Π·Π»ΠΎΠΌΠ°Π½.

Flow Control (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…) — Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… сСтях, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компСнсируСт различия Π² ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°.

Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΄Π²Π° способа: Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ (CTS/RTS) ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ (XOn/XOff).

ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Π² ΠΌΠ΅Π½ΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Hardware Flow Control.

NET Framework — программная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, выпущСнная ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft Π² 2002 Π³ΠΎΠ΄Ρƒ. Основой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ являСтся ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ срСда Common Language Runtime (CLR), способная Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ Π²Π΅Π±-прилоТСния. .NET Framework ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования.

БчитаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET Framework явилась ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft Π½Π° Π½Π°Π±Ρ€Π°Π²ΡˆΡƒΡŽ ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Java ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sun Microsystems (Π½Ρ‹Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Oracle).

На ΠΎΡΠ½ΠΎΠ²Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сравнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ обфускации, Π½ΠΈΠΆΠ΅ дСлаю Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ понимания ΠΊΠ°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ обфускации ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π° ΠΊΠ°ΠΊΡƒΡŽ Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚.

Рисунок. 1.3. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств обфускации.

Π’Ρ‹Π²ΠΎΠ΄:

Π’Ρ‹Π²ΠΎΠ΄ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ качСствСнноС срСдство ΠΈΠ»ΠΈ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ обфускации, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½Π° удовлСтворяла ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ трСбованиям:

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ;

НС Π±Ρ‹Π»Π° раскрыта ΠΈΠ»ΠΈ Π²Π·Π»ΠΎΠΌΠ°Π½Π° Ρ€Π°Π½Π΅Π΅;

ΠžΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ простых символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΌΡ‹;

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° соврСмСнныС стандарты .NET;

НС ΡΡ‚ΠΎΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅ бСсплатными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ обфускации, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ защитят ваш ΠΊΠΎΠ΄.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БСгодня, Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ½Π΅Π½ΠΈΠΉ Π½ΡƒΠΆΠ½Π° Π»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ с Π²Ρ‹Π³ΠΎΠ΄ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ срСдство Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π½Π΅ΡΠ°Π½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ хищСния ΠΈΠ»ΠΈ вскрытия Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π“Π΄Π΅? ΠΈ ΠšΠΎΠ³Π΄Π°? ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ. На ΠΌΠΎΠΉ взгляд эти споры Ρ€ΠΈΡΠΊΡƒΡŽΡ‚ ΡΡ‚Π°Ρ‚ΡŒ бСсконСчными, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ сколько людСй, ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈ ΠΌΠ½Π΅Π½ΠΈΠΉ. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ обфускация ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ свою Π½ΠΈΡˆΡƒ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ Ρ…ищСния ΠΈ Π½Π΅ΡΠ°Π½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Π³ΠΎ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. На ΠΌΠΎΠΉ взгляд ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обфускации ΠΌΠΎΠΆΠ½ΠΎ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… тСхнологиях, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π² ΡΡ„Π΅Ρ€Π΅ Π³Π΄Π΅ ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ связи ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ исходный тСкст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΊΡ€Π°ΠΆΠΈ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ копирования. Как Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ обфускации Π²ΠΈΠΆΡƒ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ проходят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ процСсс обфускации, Π·Π°Ρ‚Π΅ΠΌ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ исходный ΠΊΠΎΠ΄ созданного Ρ„Π°ΠΉΠ»Π° ΠΈ ΡΠ°ΠΌ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊΠΈΠΌΠΈ Ρ‚ΠΎ ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹ΠΌΠΈ криптографичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ связи. ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΅ смоТСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² сходноС, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΎΠ½ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ содСрТимоС Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π² Π΄Π²Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹.

Как Π±Ρ‹Π»ΠΎ ΡƒΠΆΠ΅ упомянуто Π²Ρ‹ΡˆΠ΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ запутывания Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ свойства чСловСчСской психики ΠΈ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚ΡƒΠΏΠΈΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт систСмой Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. МоТно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ запутанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ замаскированным. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ прСобразования, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π·Π°.

Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ рСгулярным. РСгулярная структура Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΅Ρ‘ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° позволяСт Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ части ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ запутывания.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ стандартных синтаксичСских ΠΈ ΡΡ‚атичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС Π΅Ρ‘ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ сущСствСнных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ быстрый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ΄ΡƒΡˆΠ΅Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π° Π΅Π³ΠΎ отсутствиС, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΡƒΠ³Π½Π΅Ρ‚Π°Ρ‚ΡŒ.

БСйчас Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° запутывания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ удовлСтворял всСм этим ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… исслСдований.

Π”Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² запутывания ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка ассСмблСра (машинного ΠΊΠΎΠ΄Π°). Π₯отя ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ запутывания Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСпСрСносимыми Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠΈ скрыт большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π».

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π²ΡΠ΅ΠΌΡƒ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ, ΠΏΠΎΠ΄Π²ΠΎΠΆΡƒ Ρ‡Π΅Ρ€Ρ‚Ρƒ. Π¦Π΅Π»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ поставлСны ΠΈ ΡΠΎΠΎΡ‚вСтствСнно описаны Π²ΠΎ «Π’Π²Π΅Π΄Π΅Π½ΠΈΠΈ» ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ создания курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° достигнуты. А ΠΈΠΌΠ΅Π½ΠΎ:

курсовой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказываСт ΠΎ ΠΏΠΎΠ½ΡΡ‚ΠΈΠ΅ «ΠžΠ±Ρ„ускация»;

Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΠΈ;

освСщаСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² «ΠžΠ±Ρ„ускации».

Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ освСтил ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ), Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π»Π°ΡΡŒ Π»ΠΈ обфускации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. Π‘Ρ‡ΠΈΡ‚Π°ΡŽ этот ΠΏΡƒΠ½ΠΊΡ‚ Π²Π°ΠΆΠ½Ρ‹ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³ ΡΡ‚Π°Ρ‚ΡŒ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠΉ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄ΡΡƒΠ½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» с Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ функциями ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ использовав ΠΌΠ΅Ρ‚ΠΎΠ΄ обфускации ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ измСнСния ΠΊΠΎΠ΄Π°.

1. А. Π’. Π§Π΅Ρ€Π½ΠΎΠ². Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ срСда для исслСдования «ΠΎΠ±Ρ„ускации» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ, посвящённой 90-Π»Π΅Ρ‚ΠΈΡŽ со Π΄Π½Ρ роТдСния А. А. Ляпунова. Россия, Новосибирск, 8−11 ΠΎΠΊΡ‚ября 2001 Π³ΠΎΠ΄Π°. http://www.ict.nsc.ru/ws/Lyap2001/2350/ ;

2. «ΠΠ½Π°Π»ΠΈΠ· Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ», Π°Π²Ρ‚ΠΎΡ€ Π§Π΅Ρ€Π½ΠΎΠ² А. Π’.

3. B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan, K. Yang. On the (Im)possibility of Obfuscating Programs. LNCS, 2001, 2139, pp. 1−18.

4. S. Chow, Y. Gu, H. Johnson, V. Zakharov. An approach to the obfuscation of control-flow of sequential computer programs. LNCS, 2001, 2200, pp. 144−155.

5. C. Cifuentes, K. J. Gough. Decompilation of Binary Programs. Technical report FIT-TR-1994;03. Queensland University of Technology, 1994. http://www.fit.qut.edu.au/TR/techreports/FIT-TR-94−03.ps

6. C. Collberg, C. Thomborson, D. Low. A Taxonomy of Obfuscating Transformations. Department of Computer Science, The University of Auckland, 1997. http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborsonLow97a

7. C. Collberg, C. Thomborson, D. Low. Breaking Abstractions and Unstructuring Data Structures. In IEEE International Conference on Computer Languages, ICCL'98, Chicago, IL, May 1998.

8. C. Collberg, C. Thomborson, D. Low. Manufacturing Cheap, Resilient, and Stealthy Opaque Constructs. In Principles of Programming Languages 1998, POPL'98, San Diego, CA, January 1998.

9. C. Collberg, C. Thomborson. On the Limits of Software Watermarking. Technical Report #164. Department of Computer Science, The University of Auckland, 1998. http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborson98e

10. C. Collberg, C. Thomborson. Watermarking, Tamper-Proofing, and Obfuscation — Tools for Software Protection. Technical Report 2000;03. Department of Computer Science, University of Arizona, 2000. http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborson2000a

11. G. Hachez, C. Vasserot. State of the Art in Software Protection. Project FILIGRANE (Flexible IPR for Software Agent Reliance) deliverable/V2. http://www.dice.ucl.ac.be/crypto/filigrane/External/d21.pdf

12. M. Hind, A. Pioli. Which pointer analysis should I use? In ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 113−123, August 2000. The International Obfuscated C Code Contest. http://www.ioccc.org

13. M. Jalali, G. Hachez, C. Vasserot. FILIGRANE (Flexible IPR for Software Agent Reliance). A security framework for trading of mobile code in Internet. In Autonomous Agent 2000 Workshop: Agents in Industry, 2000.

14. H. Lai. A comparative survey of Java obfuscators available on the Internet. http://www.cs.auckland.ac.nz/~cthombor/Students/hlai

15. D. Low. Java Control Flow Obfuscation. MSc Thesis. University of Auckland, 1998. http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/thesis.ps

16. J. MacDonald. On Program Security and Obfuscation. 1998. http://www.xcf.berkeley.edu/~jmacd/cs261.pdf

17. M. Mambo, T. Murayama, E. Okamoto. A Tentative Approach to Constructing Tamper-Resistant Software. In ACM New Security Paradigms Workshop, Langdale, Cumbria UK, 1998.

18. A. von Mayrhauser, A. M. Vans. Program Understanding: Models and Experiments. In M. Yovits, M. Zelkowitz (eds.), Advances in Computers, Vol. 40, 1995. San Diego: Academic Press, pp. 1−38.

19. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997. SourceAgain Java decompiler. http://www.ahpah.com

20. F. Tip. A survey of program slicing techniques. Journal of Programming Languages, 3(3): 121−189, September 1995.

21. E. Walle. Methodology and Applications of Program Code Obfuscation. Faculty of Computer and Electrical Engineering, University of Waterloo, 2001. http://walle.dyndns.org/morass/misc/wtr3b.doc

22. C. Wang. A Security Architecture for Survivability Mechanisms. PhD Thesis. Department of Computer Science, University of Virginia, 2000. http://www.cs.virginia.edu/~survive/pub/wangthesis.pdf

23. C. Wang, J. Davidson, J. Hill, J. Knight. Protection of Software-based Survivability Mechanisms. Department of Computer Science, University of Virginia, 2001. http://www.cs.virginia.edu/~jck/publications/dsn_distribute.pdf

24. Zelix KlassMaster Java Code Obfuscator and Obfuscation. http://www.zelix.com

БвСдСния ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

25. http://habrahabr.ru/post/97 062/

26. http://www.gotdotnet.ru/blogs/sieben/6488/

27. http://www.remotesoft.com/linker/

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ

1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π°Ρ…. ЦСль Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² — выявлСниС зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ прСобразования, ΠΈΠ»ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ прСобразования.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° 4 Π³Ρ€ΡƒΠΏΠΏΡ‹:

БинтаксичСскиС. К ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ относятся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, основанныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… лСксичСского, синтаксичСского ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

БтатичСскиС. К ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ относятся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² управлСния ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, основанныС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² управлСния ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ДинамичСскиС. ДинамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ «Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΡ» Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ сами ΠΏΠΎ ΡΠ΅Π±Π΅ динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° информация ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π°Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, которая собираСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ статистичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°.

БтатистичСскиС. БтатистичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ количСства запусков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΎΠΌ количСствС Π½Π°Π±ΠΎΡ€ΠΎΠ² Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ характСристика Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… для нас ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅.

БтатичСский Π°Π½Π°Π»ΠΈΠ· алиасов (alias analysis) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… нСсколько ΠΈΠΌΡ‘Π½ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для доступа ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ области памяти. НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ элСмСнт массива a ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ адрСсован Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ a[0] (каноничСскоС имя элСмСнта массива), ΠΊΠ°ΠΊ a[j] ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΠ°ΠΊ b[-4]. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π° алиасов ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΡΠ²Π΅Π½Π½ΡƒΡŽ запись Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ косвСнноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ, ставится Π² ΡΠΎΠΎΡ‚вСтствиС мноТСство ΠΈΠΌΡ‘Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Если язык допускаСт алиасы, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π»Ρ прСобразования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ доступа ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ массивов ΠΈ ΠΏΠΎΠ»ΡΠΌ структур ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ считываСтся ΠΈΠ»ΠΈ модифицируСтся сразу вСсь массив ΠΈΠ»ΠΈ вся структура. Для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ссылок Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС («ΠΊΠΎΠ½ΡΠ΅Ρ€Π²Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ» Π°Π½Π°Π»ΠΈΠ·) ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ косвСнноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° ΠΊΠΎΡΠ²Π΅Π½Π½Π°Ρ запись Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ всС ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Вакая схСма слишком Π³Ρ€ΡƒΠ±Π° ΠΈ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ практичСски любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ