ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ JavaScript

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ

Он всСм извСстСн β€” обфускация ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ JS Packer, JSmin, YUI Compressor, Closure compiler ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡƒΠ³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Β«JavaScript ObfuscatorΒ» ΠΈ найдСтся Π΅Ρ‰Ρ‘ сто ΡˆΡ‚ΡƒΠΊ Ρ€Π°Π·Π½Ρ‹Ρ… обфускаторов.
Они ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄:

Но Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ стоит Π΅Π³ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jsbeautifier.org Π»ΠΈΠ±ΠΎ просто ΡƒΠ±Ρ€Π°Ρ‚ΡŒ eval ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄, ΠΌΠ½ΠΎΠ³ΠΎΠ΅ потСряСм, Π½ΠΎ смысл ΠΊΠΎΠ΄Π° восстановим. Ну ΠΈ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ JavaScript.

ВсС это Π±Ρ‹Π»ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ ТСсткиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обфускации.

Бпособ Π²Ρ‚ΠΎΡ€ΠΎΠΉ

ИзмСнСниС ΠΊΠΎΠ΄Π° Π΄ΠΎ нСузнаваСмости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ наш ΠΌΠΈΠ·Π΅Ρ€Π½Ρ‹ΠΉ скрипт:
alert(0)

Или Π²ΠΎΡ‚ Π² Ρ‚Π°ΠΊΠΎΠΉ (ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ±ΠΎ хабрапарсСр):
οΎŸΟ‰οΎŸοΎ‰= /`m´)ノ

Π’ΡƒΡ‚ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π° ΠΈ Π½Π΅ скаТСшь, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ 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-ΠΊΠΎΠ΄ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅ ΠΎΡ‚ посторонних

ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. obfuscation. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-obfuscation. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° obfuscation. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass 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
Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Ρ€Π°Ρ„ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дополняя Π΅Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ стартовый Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½, Ρ€Π°Π·Π±Π°Π²Π»Π΅Π½ мусором.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Ρ„
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.
ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ 1 запуск, функция main
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.
ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ 2 запуск, функция main
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.
ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ 3 запуск, функция main
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·.
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.
Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·.
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. image loader. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

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Π‘. Но Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ обфускации минимальна ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ созданию внСшнСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (достаточно ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ). ПослС ΠΎΠΏΠ»Π°Ρ‚Ρ‹ восстанавливаСм исходный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, сопровоТдСниС ΠΈΠ΄Π΅Ρ‚ Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ восстановлСния исходных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π° основании обфусцированных сопоставима ΠΏΠΎ трудоСмкости с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ….

ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 34ceaccda5ad9b48c6ce7982828714a6. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-34ceaccda5ad9b48c6ce7982828714a6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 34ceaccda5ad9b48c6ce7982828714a6. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

ΠŸΠ Π˜ΠœΠ•Π 
Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 84ee823340ce0ad9c9ac11cadca5876e. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-84ee823340ce0ad9c9ac11cadca5876e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 84ee823340ce0ad9c9ac11cadca5876e. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ β€” имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ случайноС число + ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 8da10e0a569875eb562fbc662b0c62e3. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-8da10e0a569875eb562fbc662b0c62e3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 8da10e0a569875eb562fbc662b0c62e3. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

ΠΈΠ»ΠΈ
ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ β€” имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π£Π˜Π” + ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 55e831eac19234257601933dcce738d9. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-55e831eac19234257601933dcce738d9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 55e831eac19234257601933dcce738d9. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.

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Ρ‚ΠΈ статСй ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠ°Ρ€ΠΊΠΈΠ΅ дискуссии, создаСт настоящиС Π³ΠΎΠ½ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… изысканий. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, оказываСтся, Ρ‡Ρ‚ΠΎ обфускация β€” Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ практичСски всё, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ сСгодня. РазбСрСмся, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Ρ‚Π°ΠΊΠΎΠ΅.

Давая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ доступ ΠΊ установочным Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ свои ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ сСкрСты ΠΈ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ останавливаСт Π·Π»ΠΎΠ±ΠΎΠ½Ρ€Π°Π²Π½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ бСззастСнчивого копирования ΠΈ воровства Ρ‡ΡƒΠΆΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это Π²Π°ΠΆΠ½Ρ‹Π΅ обновлСния (ΠΏΠ°Ρ‚Ρ‡ΠΈ), ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ошибки Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах. ΠŸΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ анализируСтся Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌΠΈ, ΠΎΠ½ΠΈ Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ это ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‡ΠΈΠ½ΠΈΡ‚, ΠΈ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‚ нСсчастных, Π½Π΅ ΡƒΡΠΏΠ΅Π²ΡˆΠΈΡ… воврСмя ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 4b75dcaffc67fdccc5756b5fe37e7554. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-4b75dcaffc67fdccc5756b5fe37e7554. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 4b75dcaffc67fdccc5756b5fe37e7554. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.Π­Ρ‚ΠΈ Π΄Π²Π΅ ситуации связываСт ΠΎΠ΄Π½Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: написанная Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΆΠ΅ ΠΈ понята, ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π°. А Ρ‡Ρ‚ΠΎ Ссли сущСствовал Π±Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ ΠΌΠΎΠ³ Π΄ΠΎ нСузнаваСмости, Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ этом сохраняя Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Π’Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π±Ρ‹ Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ Ρ…ΡƒΠΆΠ΅ исходной? Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ называСтся Β«ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΒ» ΠΈΠ»ΠΈ «обфускатор».

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

Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ обфускатора? Β«ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒΒ» ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π·Π²ΡƒΡ‡ΠΈΡ‚ вСсьма туманно…

ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. 7c37464c1438ce9b86a239a9a32e72d1. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°-7c37464c1438ce9b86a239a9a32e72d1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 7c37464c1438ce9b86a239a9a32e72d1. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ собраны всСм извСстныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅. Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ прочтСния поста Π² Π±Π»ΠΎΠ³Π΅ Badass JavaScript ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Ρ‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ своими Π½Π°Ρ…ΠΎΠ΄ΠΊΠ°ΠΌΠΈ.Π’ 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] Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» исслСдован Β«Π»ΡƒΡ‡ΡˆΠΈΠΉΒ» обфускатор. Π‘Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ обфускатор Β«Π»ΡƒΡ‡ΡˆΠΈΠΌΒ», Ссли обфусцированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сообщаСт Π½Π΅ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Π΅ΠΌ любая другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. И Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ‚ΠΎΡ€ НСразличимости β€” это ΠΈ Π΅ΡΡ‚ΡŒ Β«Π»ΡƒΡ‡ΡˆΠΈΠΉΒ» обфускатор. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ конструкция-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ обфускатора Π½Π° свСтС ΡƒΠΆΠ΅ Ρƒ нас Π² ΠΊΠ°Ρ€ΠΌΠ°Π½Π΅! И скоро Π½Π΅ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΎΡ‰Ρ€ΡΡ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠΈ инструкций ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ΠΎ Π΅ΡΡ‚ΡŒ фактичСски, ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ‚ΠΎΡ€ НСразличимости это ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ², ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡ΡƒΡ‚ΡŒ Π»ΠΈ Π½Π΅ всю ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ практичСски всё, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ сСгодня. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, трСбуСтся Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ обфускатор станСт доступСн для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования, Π½ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для этого ΡƒΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *