ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ JavaScript
Π ΡΡΠ°ΡΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠ΅. ΠΡΡ ΡΡΠ°ΡΡΡ Ρ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ ΡΠ΅ΡΠΈΠ» Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π½Π°Ρ ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΠ½ Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ β ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ JS Packer, JSmin, YUI Compressor, Closure compiler ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ³ΡΠ³Π»ΠΈΡΡ Β«JavaScript ObfuscatorΒ» ΠΈ Π½Π°ΠΉΠ΄Π΅ΡΡΡ Π΅ΡΡ ΡΡΠΎ ΡΡΡΠΊ ΡΠ°Π·Π½ΡΡ
ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠΎΠ².
ΠΠ½ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄
Π ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄:
ΠΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠΎΠΈΡ Π΅Π³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ jsbeautifier.org Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ±ΡΠ°ΡΡ eval ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ΅ΠΌ, Π½ΠΎ ΡΠΌΡΡΠ» ΠΊΠΎΠ΄Π° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ. ΠΡ ΠΈ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ JavaScript.
ΠΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΈ ΡΠ²Π΅ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ ΠΆΠ΅ΡΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ.
Π‘ΠΏΠΎΡΠΎΠ± Π²ΡΠΎΡΠΎΠΉ
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄ΠΎ Π½Π΅ΡΠ·Π½Π°Π²Π°Π΅ΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡ Π½Π°Ρ ΠΌΠΈΠ·Π΅ΡΠ½ΡΠΉ ΡΠΊΡΠΈΠΏΡ:
alert(0)
ΠΠ»ΠΈ Π²ΠΎΡ Π² ΡΠ°ΠΊΠΎΠΉ (ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ±ΠΎ Ρ
Π°Π±ΡΠ°ΠΏΠ°ΡΡΠ΅Ρ):
οΎΟοΎοΎ= /ο½ο½Β΄οΌοΎ
Π’ΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π° ΠΈ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ JavaScript.
Π’ΡΠ»Π·Π° Π΄Π΅Π»Π°ΡΡΠ°Ρ ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° ΠΎΠ΄ΠΈΠ½, ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° Π΄Π²Π°. Vladson Π½Π°ΡΠ΅Π» Π΅ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ»Π·Ρ jjencode
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΎΡΠΎΠ±Π° Π΄Π²Π°
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ _/_ = 3/3 = 1
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΡΠ°Π½Π΅Ρ ($ = [] [«s» + «o»+ «r»+ «t» ] )()
($=[][«sort»])()
ΠΠ΄Π΅ΠΌ Π΄Π΅Π»ΡΡΠ΅
[__[_/_]+__[_+
Π‘ΡΡΠΎΠΊΠ° ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡβ¦
[__[_/_]+__[_+
ΠΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²
[ «a» + «l» + «e» + «r» + «t» ](1)
Π ΠΊΠΎΠ½ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ($=[][«sort»])()[«alert»](1)
Π Π°Π·ΠΎΠ±ΡΡΠΌ ΠΏΠΎ ΡΠ°ΡΡΡΠΌ
a = [] // Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²
b = a[«sort»] // ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ sort
c = b() // ΠΡΠΏΠΎΠ»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π²Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° window
d = c[«alert»] // ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° window.alert
d(1) // ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ window.alert Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ 1
ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ°ΠΊ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ.
Π‘ΠΏΠΎΡΠΎΠ± ΡΡΠ΅ΡΠΈΠΉ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅Π»Π°Π» ΠΊΠΎΠ΄ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° JavaScript, Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ, Π° ΡΡΠ΅ΡΠΈΠΉ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ.
ΠΠΎΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ Π²ΠΈΠ΄Π΅Π», ΠΊΠΎΠ½ΡΠ΅ΠΏΡ, ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ JS ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ.
ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ: Π²ΠΈΠ΄ΠΈΠΌΠ°Ρ ΡΠ΅ΡΡΡ β ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ Π΄Π»Ρ Π΅Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠ°Ρ ΡΠ°ΡΡΡ.
ΠΡΠ»ΠΈ Ρ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π²ΡΠ΅ ΡΡΠ½ΠΎ, ΡΠΎ ΡΠ΅ΠΊΡΠ΅Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π²ΠΎΡ Π² ΡΠ΅ΠΌ: ΠΠΌΠ΅ΡΡΠΈΠΉΡΡ Β«ΠΏΠ»ΠΎΡ
ΠΎΠΉ ΠΊΠΎΠ΄Β» (ΠΈΠ½Π°ΡΠ΅ Π·Π°ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΡΡΡΠ°ΡΡ) ΠΌΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅Π· Π½Π°Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ-ΠΈΠ·ΡΠ΅Π·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΠΈΠ΄ΠΈΠΌΡΠΉ ΡΠΊΡΠΈΠΏΡ Π² Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΉ Ρ.Π΅. Π² ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· Π·Π½Π°ΠΊΠΎΠ² ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ (Π±ΠΈΡ 1) ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² (Π±ΠΈΡ 0).
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π² 8 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π»ΠΈ. ΠΠΈΠ΄ΠΈΠΌΠ°Ρ ΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°ΡΡΡ ΠΈ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ: Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π±ΠΈΡΡ Π² ΡΠΈΡΠ»ΠΎ, Π° ΡΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π΅Ρ Π² ΡΠΈΠΌΠ²ΠΎΠ» String.fromCharCode() Π½Ρ Π° Π΄Π°Π»ΡΡΠ΅ eval
Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ (Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°ΡΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΡΡΠ²Π°ΡΡ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅)
decodeAndEval(document.getElementById(«evilCode»).innerHTML);
ΠΡΠ΄Ρ ΡΠ°Π΄ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²Π°ΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ Π²Π°ΠΌ.
PS ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈΠ±ΠΎ Ρ Π°Π±ΡΠ°ΠΏΠ°ΡΡΠ΅ΡΒ©, ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠ»Π·Ρ ΠΈΠΌΠ΅ΡΡΡΡ β Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄.
UPD Π ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ Π² png ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΡΡΡΠ΅ΠΌ JavaScript-ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΠ΅Π½ΠΈΡ ΠΠΈΡΠΎΠ³ΠΎΡΡΠΊΠΈΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈ Π²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° JavaScript. ΠΡΠΈΡΡΠΌ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΡΡΠΎΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΡΠ»ΠΈ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°, ΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Ρ Π²Π°Ρ, ΠΈ Ρ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π·ΠΎΠ½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΠ°ΠΊ Π·Π°ΡΠΈΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ?Β».
ΠΠ°ΠΊ Π·Π°ΡΠΈΡΠΈΡΡ ΠΊΠΎΠ΄: Π²Π΅Π±-ΡΠΎΠΊΠ΅ΡΡ, ΠΊΡΠΈΠΏΡΠΎΡΡ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π²ΡΠ΅ ΠΌΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ JavaScript Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Π Π»ΡΠ±ΠΎΠΉ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π»ΠΈΡΡ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ.
ΠΡΠ°ΠΊ, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π°:
ΠΡΠΈΠΏΡΠΎΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊΠΎΠ΄ Π² Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΉ Π²ΠΈΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, base64 (ΡΡΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΌΠ° ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 30%). ΠΠ°ΡΠ΅ΠΌ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Β«ΡΠΎΠ»ΡΒ» β Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ-Π΄Π΅ΡΠΈΡΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ°. ΠΡ Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΡ ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· eval(). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΈΡ ΡΠ°Π±ΠΎΡΡ, ΠΎΡΡΠ΅ΡΡ Β«ΡΠΎΠ»ΡΒ» ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎ ΡΡΠ°Π·Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠ±ΡΡΡΠΊΠ°ΡΠΎΡΡ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΌ ΠΊΠΎΠ΄, Π²ΡΡΠ°Π²Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Π½Π°Π±ΠΎΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΡΠΌ ΠΊΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ·-Π·Π° Π²ΡΡΠ°Π²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° hex, ΠΊΠΎΠ³Π΄Π° Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡΡΡ Π² ΠΈΡ hex-Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»Π°ΡΠΈΠ½ΡΠΊΠ°Ρ Π±ΡΠΊΠ²Π° βeβ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊ β\x65β, ΠΏΡΠΈΡΡΠΌ ΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π»ΡΠ±ΡΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ). ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π² hex ΡΠ΅ΡΠ΅Π· Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ Text To Hex, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Crypt Online.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Closure Compiler ΠΎΡ Google, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΡΠΎΠΌΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ JavaScript-ΠΊΠΎΠ΄, ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΌΡΡΡΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΡΠΎ, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΠΈΠΏΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ ΠΎΠ± ΠΎΠ±ΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ JavaScript. ΠΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API.
ΠΡΠΎΠΌΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΡ ΡΡΠΎ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΡΠΎΠΏΡΠΎΡΠ΅Π½ΡΠ½ΠΎΠΉ Π·Π°ΡΠΈΡΠΎΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π΅ΡΠΈΡΡΠΎΠ²ΠΊΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ Π»ΡΠ±ΠΈΡΠ΅Π»ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΆΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡΡΠ°Π²ΡΡ Π²Π°Ρ ΡΠ°ΠΉΡ Π² ΠΏΠΎΠΊΠΎΠ΅.
ΠΠ°ΡΠΈΡΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ JavaScript-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°
ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» JavaScript-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ Π΄Π»Ρ ΡΠ°ΡΡΡΡΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΡΡΠ»ΡΠ³, Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ Π·Π°Π΄Π°ΡΡ Π·Π°ΡΠΈΡΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ°ΠΉΡΠ°Ρ . ΠΡΠΊΠ°Π» ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΡΡΠ», ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ°Π» ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅. ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π΅Π³ΠΎ Π½ΠΈΠΆΠ΅.
ΠΠ±ΡΠ°ΡΠ°Ρ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ, ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΡΠ°ΡΠΊΡΡΡΡ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ, Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠΈΠ΄ΡΠΈΠ²ΠΎΡΡΡ. Π ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠΎΠ»ΠΊΠ½ΡΡΡ Π²Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² ΠΎΡ ΠΈΠ΄Π΅ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ΄ΡΡ ΠΈΡΠΊΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ ΠΏΠΎΡ ΠΎΠΆΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΡΡΠ°Ρ .
ΠΠΎ ΠΈΡΠΎΠ³Π°ΠΌ ΡΠ°Π±ΠΎΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅:
ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠΏΡΡΠ½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠ°Π·Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· base64. ΠΠΎ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Π»ΡΠ±ΡΠΌ base64 Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠΎΠΌ, Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΠ»ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π² alert (ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ Π΄Π»Ρ Π΄Π΅ΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π°), ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π½ΡΠ»Π΅Π²ΡΠΌ.
ΠΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΠΊΡΠΎ Π²Π΅Π΄Ρ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΠΈΠΏΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π§Π΅ΡΠ΅Π· base64 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ Π²ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.
ΠΠ° ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠ°Ρ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΡΡΠ°Π²ΡΡ Π²Π°Ρ ΡΠ°ΠΉΡ Π² ΠΏΠΎΠΊΠΎΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
ΠΠ°ΠΊ Π·Π°ΡΠΈΡΠΈΡΡ JavaScript ΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ²ΠΎΡΠΌ ΡΠ°ΠΉΡΠ΅
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π² ΡΡΡΠ΅ΡΠ΅ ΡΠ°ΠΉΡΠ° ΠΏΡΡΡ Π½Π° ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΡΡ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ:
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ βKβ (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±Π°Ρ Π»Π°ΡΠΈΠ½ΡΠΊΠ°Ρ Π±ΡΠΊΠ²Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π±ΡΠΊΠ² ΠΈΠ»ΠΈ ΡΠΈΡΡ) Π·Π°ΡΠΈΡΠ°Π΅Ρ Π½Π°Ρ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΆΠ΅Π»Π°ΡΡΠΈΠΉ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ ΡΠ°ΡΡΠΈΡΡΡΠ΅Ρ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ alert() ΠΈΠ»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-Π΄Π΅ΡΠΈΡΡΠ°ΡΠΎΡΠ°. ΠΠ΅Π΄Ρ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π΅Π½.
ΠΠ°ΡΠ΅ΠΌ Π³Π΄Π΅-ΡΠΎ Π΄Π°Π»ΡΡΠ΅ Π² ΠΊΠΎΠ΄Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΊΡΠΈΠΏΡ:
ΠΡΡΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΠΏΠΎΠ΄Π°Π»ΡΡΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠΊΡΠΈΠΏΡΡ.
ΠΠ°Π»Π΅Π΅ Π³Π΄Π΅-ΡΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ ΡΠ°ΠΉΡΠ°, ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π΅ΡΠΈΡΡΠΎΠ²ΠΊΠΈ. ΠΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
[] (ΡΡΠΎ ΡΠ°Π²Π½ΠΎ 1 Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· s ΡΡΡΠΎΠΊΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π² PHP-ΠΊΠΎΠ΄Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΡΠΈ, ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΈ substring() ΡΠΊΠ°Π·Π°ΡΡ 2+(-
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²Π²Π΅ΡΡΠΈ ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅:
ΠΡ ΡΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? 🙂 ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅:
ΠΠ΄Π΅ΡΡ, Π΄ΡΠΌΠ°Ρ, ΡΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ. ΠΡΠ΅ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ eval() Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ. Β«ΠΠ»ΠΎΡ Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°Β», ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π»ΠΈ Π±Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΈ Π½ΡΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°ΡΠ΅ΠΉ ΠΈΠ΄Π΅ΠΈ. Π ΡΠΎΠΌΡ ΠΆΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ.
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Π²Ρ Π·Π°Π΄Π°Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, Π° ΠΊΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Ρ Π² Π½Π°Π±ΠΎΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²? ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ: Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² β ΡΡΠΎ ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π’.Π΅. ΡΡΠΎ ΡΠ΅ΠΊΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ hex (hexadecimal), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΡΠ° ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΠ» ΠΏΠΎ ΡΡΡΠΎΡΠΊΠ°ΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ):
ΠΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Π½ΠΎ ΡΠΎΠ±ΡΡΡ Ρ ΡΠΎΠ»ΠΊΡ Π½Π΅Ρ ΠΎΡΠΎΡΠΈΡ ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡΠ΅ΡΠΎΠ².
ΠΠ° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ° ΠΠ΅Π½ΠΈΡΠ° ΠΠΈΡΠΎΠ³ΠΎΡΡΠΊΠΎΠ³ΠΎ
Π’Π΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ LLVM
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π‘ΡΠ°ΡΡΡ Π½Π΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΎΡΠΈΠΈ, ΡΠ΅ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π½Π°Π½ΠΈΠΉ Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ°ΠΌΠΎΠΌΡ, Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Ρ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² LLVM IR Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π½Π°ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ.
Π§ΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ LLVM?
1) CΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ CFG
ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π³ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ Π΅Π΅ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΡΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½, ΡΠ°Π·Π±Π°Π²Π»Π΅Π½ ΠΌΡΡΠΎΡΠΎΠΌ.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π³ΡΠ°Ρ
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ 1 Π·Π°ΠΏΡΡΠΊ, ΡΡΠ½ΠΊΡΠΈΡ main
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ 2 Π·Π°ΠΏΡΡΠΊ, ΡΡΠ½ΠΊΡΠΈΡ main
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ 3 Π·Π°ΠΏΡΡΠΊ, ΡΡΠ½ΠΊΡΠΈΡ main
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·.
ΠΡΠΎΡΠΎΠΉ ΡΠ°Π·.
8) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠΈΠΊΠ»ΠΎΠ².
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, Π±Π΅ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°, ΡΠΈΠΊΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·.
9) Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°, Π²Π΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π½Π΅Π΅, Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΎΡΠΈΠΈ.
Π‘ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅?
FIRST_TERM_INST ( 1)
HANDLE_TERM_INST ( 1, Ret, ReturnInst)
HANDLE_TERM_INST ( 2, Br, BranchInst)
HANDLE_TERM_INST ( 3, Switch, SwitchInst)
HANDLE_TERM_INST ( 4, IndirectBr, IndirectBrInst)
HANDLE_TERM_INST ( 5, Invoke, InvokeInst)
HANDLE_TERM_INST ( 6, Resume, ResumeInst)
HANDLE_TERM_INST ( 7, Unreachable, UnreachableInst)
LAST_TERM_INST ( 7)
// Standard binary operatorsβ¦
FIRST_BINARY_INST( 8)
HANDLE_BINARY_INST( 8, Add, BinaryOperator)
HANDLE_BINARY_INST( 9, FAdd, BinaryOperator)
HANDLE_BINARY_INST(10, Sub, BinaryOperator)
HANDLE_BINARY_INST(11, FSub, BinaryOperator)
HANDLE_BINARY_INST(12, Mul, BinaryOperator)
HANDLE_BINARY_INST(13, FMul, BinaryOperator)
HANDLE_BINARY_INST(14, UDiv, BinaryOperator)
HANDLE_BINARY_INST(15, SDiv, BinaryOperator)
HANDLE_BINARY_INST(16, FDiv, BinaryOperator)
HANDLE_BINARY_INST(17, URem, BinaryOperator)
HANDLE_BINARY_INST(18, SRem, BinaryOperator)
HANDLE_BINARY_INST(19, FRem, BinaryOperator)
// Logical operators (integer operands)
HANDLE_BINARY_INST(20, Shl, BinaryOperator) // Shift left (logical)
HANDLE_BINARY_INST(21, LShr, BinaryOperator) // Shift right (logical)
HANDLE_BINARY_INST(22, AShr, BinaryOperator) // Shift right (arithmetic)
HANDLE_BINARY_INST(23, And, BinaryOperator)
HANDLE_BINARY_INST(24, Or, BinaryOperator)
HANDLE_BINARY_INST(25, Xor, BinaryOperator)
LAST_BINARY_INST(25)
// Memory operatorsβ¦
FIRST_MEMORY_INST(26)
HANDLE_MEMORY_INST(26, Alloca, AllocaInst) // Stack management
HANDLE_MEMORY_INST(27, Load, LoadInst ) // Memory manipulation instrs
HANDLE_MEMORY_INST(28, Store, StoreInst )
HANDLE_MEMORY_INST(29, GetElementPtr, GetElementPtrInst)
HANDLE_MEMORY_INST(30, Fence, FenceInst )
HANDLE_MEMORY_INST(31, AtomicCmpXchg, AtomicCmpXchgInst )
HANDLE_MEMORY_INST(32, AtomicRMW, AtomicRMWInst )
LAST_MEMORY_INST(32)
// Other operatorsβ¦
FIRST_OTHER_INST(45)
HANDLE_OTHER_INST(45, ICmp, ICmpInst ) // Integer comparison instruction
HANDLE_OTHER_INST(46, FCmp, FCmpInst ) // Floating point comparison instr.
HANDLE_OTHER_INST(47, PHI, PHINode ) // PHI node instruction
HANDLE_OTHER_INST(48, Call, CallInst ) // Call a function
HANDLE_OTHER_INST(49, Select, SelectInst ) // select instruction
HANDLE_OTHER_INST(50, UserOp1, Instruction) // May be used internally in a pass
HANDLE_OTHER_INST(51, UserOp2, Instruction) // Internal to passes only
HANDLE_OTHER_INST(52, VAArg, VAArgInst ) // vaarg instruction
HANDLE_OTHER_INST(53, ExtractElement, ExtractElementInst)// extract from vector
HANDLE_OTHER_INST(54, InsertElement, InsertElementInst) // insert into vector
HANDLE_OTHER_INST(55, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.
HANDLE_OTHER_INST(56, ExtractValue, ExtractValueInst)// extract from aggregate
HANDLE_OTHER_INST(57, InsertValue, InsertValueInst) // insert into aggregate
HANDLE_OTHER_INST(58, LandingPad, LandingPadInst) // Landing pad instruction.
LAST_OTHER_INST(58)
CΡΠΎΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ.
1) Obfuscator-llvm
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
2) Kryptonite
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ / ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
Π‘Π½ΠΈΠΏΠΏΠ΅ΡΡ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π°ΡΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ llvm::InlineAsm ΠΈΠ»ΠΈ MachinePass, ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΡΡ ΡΡΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»?
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΌΠΎΠ΄ΡΠ»Π΅?
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ?
ΠΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°ΡΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ?
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ?
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ Π½Π΅ phi ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅?
ΠΠ°ΠΊ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈ?
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π³Π΄Π΅ ΡΠΎ Π΅ΡΠ΅?
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ InvokeInst ΠΈ Π΄ΡΡΠ³ΠΈΠ΅?
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° 1Π‘
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ «Π½Π΅ Π² ΠΊΡΡΡΠ΅», Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ:
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Β«ΠΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡΒ» Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ (Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠΏΠ»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ):
— Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ;
— Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅/ΡΠΈΡΠ°ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
— Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΡΡΠ°ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Π»ΡΠ±ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΊΡ, ΡΡΠ΅Π΄Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ Β«ΠΆΠ΅Π»Π΅Π·ΡΒ»;
— Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΡΡΠΈΠΌΡΠ» ΠΎΠΏΠ»Π°ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, 100% Π·Π°ΡΠΈΡΡ Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ 1Π‘. ΠΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π° ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ). ΠΠΎΡΠ»Π΅ ΠΎΠΏΠ»Π°ΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ Π² ΡΡΠ°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π’ΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² ΡΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ° ΠΏΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΠΈ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ .
ΠΠ ΠΠΠΠ
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄:
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ β ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ + ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ
ΠΈΠ»ΠΈ
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ β ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π£ΠΠ + ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ
1.ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ/ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΡΠΌΡ/ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ. ΠΠ±ΡΡΡΡΠΈΡΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
— ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
— ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ/ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ
— Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ
2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°Π·Π±ΠΈΠ²ΠΊΠ°/ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ.
3. ΠΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠΎΠΊ Β«ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ» ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠ°ΡΠΎΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Β«ΠΏΡΡΡΠ΅ΡΡΡΒ» Π² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅ΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ (ΠΌΠ΅ΡΠΊΠ° Π΄ΠΈΡΠΊΠ°, ΠΈΠΌΡ ΠΌΠ°ΡΠΈΠ½Ρ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈ Π²ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ ΠΠ°ΡΠ° ΡΠ°Π½ΡΠ°Π·ΠΈΡ), ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΌΠΎΠ΄ΡΠ»Π΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π±Π΅Π· ΠΏΠ°ΡΠΎΠ»Ρ/Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½/ΠΏΠΎΡΠ΅ΡΡΠ½ (Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ).
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ:
1. Π ΠΏΠΎΠ»Π΅ Β«Π’Π΅ΠΊΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉΒ» ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ
2. ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡΒ» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ
3. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡΒ»
4. ΠΠ°Π±ΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ Β«ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉΒ».
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ/ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
1. ΠΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ/ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΠΠΠΠΠΠΠΠ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π² ΠΠΠ‘ΠΠΠΠ¬ΠΠ Π ΠΠ, Π΅ΡΠ»ΠΈ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ². ( Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Β«ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈΒ» ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 2-3 ΡΠ°Π·Π°, ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Β«ΡΠΈΡΡΠΎΠΌΡΒ» ΠΊΠΎΠ΄Ρ)
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎ. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΠΠΠΠΠ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ β ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΡΠΌΡ/ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎΡ Π½ΡΠ°Π½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠ°Π²ΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°.
2. ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ/ΡΠΈΡΡΡΡΡΡΡ ΠΠ‘Π ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ.
3. ΠΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΠ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ.(Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ²Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ)
4. ΠΠ΅ΡΠ΅Π½ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΠ Π’ΠΠ‘Π’ΠΠ ΠΠΠΠΠΠ‘Π¬. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ°.
6. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π°.
ΠΠΎΠΆΠ΅Ρ Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ ΡΡΡΠΎΠΊ.
ΠΠΎΠ΄ Π²ΠΈΠ΄Π° : ΠΡΠ°Π€ΠΎΡΠΌΠ°.ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ.ΠΠΌΡΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°.Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ=ΠΠ΅ΠΊΠΎΠ΅ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΡ «ΠΊΠ°ΠΊ Π΅ΡΡΡ»
Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌ\ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠΡΠ°Π€ΠΎΡΠΌΠ°[«ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ»][«ΠΠΌΡΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°»][«Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ»]=ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π²: NNN***[FFF***()][FFF***()][FFF***()]=NNN****
Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π²: NNN***[FFF***()]=FFF***()+FFF***()+FFF***();
NNN*** ΠΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
«ΠΠ²ΡΠΎΠΌΠ°ΡΠΎΠΌ» Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ Π΄Π΅Π»Π°Π΅ΡΡΡ. ΠΡΠ΅ Π½Π° ΠΎΡΠΊΡΠΏ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ «Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ» ΠΈ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ «Π·Π°ΡΠΈΡΡ» ΠΊΠΎΠ΄Π°
7. ΠΡΠ±Π»ΠΈΠΊΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ «ΠΊΠ°ΠΊ Π΅ΡΡΡ». Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠ²ΠΎΡ Π·Π°Π΄Π°ΡΡ ΠΎΠ½Π° ΡΠ΅ΡΠΈΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π΅ΡΡΡ π
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊΠΈ, Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΈΠ· ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ: //infostart.ru/public/95662/
«+» Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ: 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8.3 (8.3.10.2299).
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ 0.42 ΠΎΡ 2017.11.04
2. ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ/ΠΏΡΠΎΡΠ΅Π΄ΡΡ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π±ΠΎΠ»Π΅Π΅ 500 ΡΡΡΠΎΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ
2. ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠΎΠ².
3. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ «ΡΠ΅ΡΡΠ»ΠΈΡΡ» Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ- (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π)
4. ΠΡΠΈ ΠΏΡΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΡΡ «Π½Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ» ΠΊΠΎΠ΄. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π°Π²ΡΠΎ-Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ.
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ β ΡΡΠΎ ΠΏΡΠΎΡΡΠ²Π½Π°Ρ, ΡΠ°ΠΌΠ°Ρ Π³ΠΎΡΡΡΠ°Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΠΎΠ±Π»Π°ΡΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΠ²ΡΡΠ΅ 70ΡΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅, ΠΎΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΆΠ°ΡΠΊΠΈΠ΅ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ, ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ Π΄Π»Ρ Π½Π°ΡΡΠ½ΡΡ ΠΈΠ·ΡΡΠΊΠ°Π½ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ β ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ. Π Π°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, Ρ ΡΠ΅ΠΌ ΡΡΠΎ ΠΆΠ΅ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅.
ΠΠ°Π²Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΡ ΠΈ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π»ΠΎΠ±ΠΎΠ½ΡΠ°Π²Π½ΡΡ
ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² ΠΎΡ Π±Π΅Π·Π·Π°ΡΡΠ΅Π½ΡΠΈΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΎΡΠΎΠ²ΡΡΠ²Π° ΡΡΠΆΠΈΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ (ΠΏΠ°ΡΡΠΈ), ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
. ΠΠΎΡΡΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Ρ
Π°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π²ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ΠΈΡ, ΠΈ Π°ΡΠ°ΠΊΡΡΡ Π½Π΅ΡΡΠ°ΡΡΠ½ΡΡ
, Π½Π΅ ΡΡΠΏΠ΅Π²ΡΠΈΡ
Π²ΠΎΠ²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΈ Π΄Π²Π΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠ΄Π½Π° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΆΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ°, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°, ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π°. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π±Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ ΠΌΠΎΠ³ Π΄ΠΎ Π½Π΅ΡΠ·Π½Π°Π²Π°Π΅ΠΌΠΎΡΡΠΈ, Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ
ΡΠ°Π½ΡΡ Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ? Π’Π°ΠΊ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ½ΡΡΡ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π»Π° Π±Ρ Π½ΠΈΡΡΡΡ Π½Π΅ Ρ
ΡΠΆΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ? Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΎΠ±ΡΡΡΡΠΈΡΡΡΡΠΈΠΉΒ» ΠΈΠ»ΠΈ Β«ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΒ».
Π ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Ρ ΠΎΡΠΎΡΠΈΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠΎΠ², Π° ΡΠ΅ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Π²Π΅ΡΡΠΌΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½Ρ β ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΡΠ΅ΠΊΡ ΠΈ Π΄Π΅Π»Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ Β«Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡΒ». ΠΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΡΠ΅ΡΠ΄ΠΈΠΈ Π»Π΅Π³ΠΊΠΎ Π΄Π΅ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π° ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΠΏΡΠ΅Π³ΡΠ°Π΄Π° Π΄Π»Ρ Ρ ΠΎΡΠΎΡΠΈΡ Ρ Π°ΠΊΠ΅ΡΠΎΠ².
ΠΠΎ ΡΡΠΎ ΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠ°? Β«ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΒ» ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π²ΡΠ΄Π°Π΅Ρ Π·Π²ΡΡΠΈΡ Π²Π΅ΡΡΠΌΠ° ΡΡΠΌΠ°Π½Π½ΠΎβ¦
Π 2013 [2] Π³ΠΎΠ΄Ρ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π±ΡΠ» ΡΠΎΠ²Π΅ΡΡΠ΅Π½ ΠΏΡΠΎΡΡΠ², ΡΠ΅ΠΎΡΠ΅ΡΠΈΠΊΠ°ΠΌΠΈ Π±ΡΠ»ΠΎ Π²ΡΡΠ°ΡΠ΅Π½ΠΎ Π½Π° ΡΠ²Π΅Ρ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ. ΠΡΠΎΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΠ΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈΒ» (Β«Indistinguishability ObfuscationΒ» β Β«iOΒ»), ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ: Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ, ΡΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΡΡΠΈΡ
Π΄Π²ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±ΡΠ΄ΡΡ Π½Π΅ΠΎΡΠ»ΠΈΡΠΈΠΌΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ P1, P2, ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΎ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π° x, P1(x) = P2(x), Π° O β ΡΡΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ Π½Π΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ P ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ O(P), ΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ O(P1) ΠΈ O(P2). Π’ΠΎ Π΅ΡΡΡ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ, ΡΠΎ Π»ΠΈ O(P1) β ΡΡΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ P1, ΡΠΎ Π»ΠΈ ΡΡΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ P2. (ΠΠ±ΡΡΡΠΊΠ°ΡΠΎΡ O β Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ). ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ
ΠΎΡΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ. ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π΄Π²ΡΡ
ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ°Ρ
, ΡΠΎΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΎΠ².
Π 2007 [3] Π³ΠΎΠ΄Ρ Π±ΡΠ» ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ Β«Π»ΡΡΡΠΈΠΉΒ» ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ. ΠΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ Β«Π»ΡΡΡΠΈΠΌΒ», Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ΅ΠΌ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ. Π Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΠ±ΡΡΡΠΊΠ°ΡΠΎΡ ΠΠ΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ β ΡΡΠΎ ΠΈ Π΅ΡΡΡ Β«Π»ΡΡΡΠΈΠΉΒ» ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠ° Π½Π° ΡΠ²Π΅ΡΠ΅ ΡΠΆΠ΅ Ρ Π½Π°Ρ Π² ΠΊΠ°ΡΠΌΠ°Π½Π΅! Π ΡΠΊΠΎΡΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΎΡΡΡΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΏΡΡΡΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
Π’ΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΠ±ΡΡΡΠΊΠ°ΡΠΎΡ ΠΠ΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ², ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΉ ΡΡΡΡ Π»ΠΈ Π½Π΅ Π²ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½.