ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java

ΠšΡ€ΡƒΡ‡Ρƒ, Π²Π΅Ρ€Ρ‡Ρƒ, Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ‡Ρƒ: обфускация Π² Java

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС «java obfuscation», Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ «Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ» Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π”Π°Π»Π΅Π΅ Π² Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΠ΄ΡƒΡ‚ элСмСнты shrink, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· ΠΊΠΎΠ΄Π° всС лишнСС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния машинной Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ rename, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΈΠ· понятных Π² нСпонятныС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих элСмСнтов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свой Π»ΠΎΠ³-Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ записываСтся Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π» ΠΈ элСмСнт keep, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠ°ΠΊ нСльзя ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒ обфускации. НапримСр, Π² jad-Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° ΡƒΠΊΠ°Π·Π°Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π΅Π΅ нСльзя ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ, Π° Ρ‚ΠΎ получится ΠΊΠ°ΠΊ Π² Π°Π½Π΅ΠΊΠ΄ΠΎΡ‚Π΅ ΠΏΡ€ΠΎ психов: «Π’Π°ΡΡŒΠΊΠ° проснСтся, Π° Π³ΠΎΠ»ΠΎΠ²Π°-Ρ‚ΠΎ Π² Ρ‚ΡƒΠΌΠ±ΠΎΡ‡ΠΊΠ΅». Ну Π²ΠΎΡ‚, Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΠΈ всС. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Ρ‹ нСспроста Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ xml: yGuard ΠΏΠΎ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ обфусцированный ΠΊΠΎΠ΄ Π² исходноС состояниС. И Π²ΠΎΡ‚ Π΅Ρ‰Π΅ Ρ‡Ρ‚ΠΎ: yGuard Ρ…ΠΎΡ‚ΡŒ ΠΈ распространяСтся бСсплатно, Π° ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ GNU Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ здСсь Π΅Π³ΠΎ ΠΈ Π½Π΅ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ.

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

Stringer β€” Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π·Π°Ρ‰ΠΈΡ‚Π΅ Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ обфускаторы. ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ управлСния (control flow) Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всС обфускаторы Π²ΠΊΠ»ΡŽΡ‡Π°Ρ бСсплатныС ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅.

ЦСлью обфускации Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° являСтся построСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ JVM ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ дСкомпилятор Π½Π΅ ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Π½Π° языкС Java.

ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡΡ‚ΠΎΡΠ½ΠΈΠ΅ обфускаторов ΠΈ дСкомпиляторов продолТаСтся постоянно.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ обфускатор ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ справляСтся с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π°Ρ‚Π°ΠΊ. ΠžΡ‚ рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Π° ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ слабо, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Java API, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ ΠΈ обфускатор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π•ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ это Π΄Π°ΠΆΠ΅ Π½Π΅ обфускатор, Π° полноцСнная Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина с Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Java API β€” Excelsior JET.

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Java ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ скорСС Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ дСкомпиляции, Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ «пСсочницу» Π²Π½ΡƒΡ‚Ρ€ΠΈ «пСсочницы» Java πŸ™‚

Π‘ этими ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ, разрабатывая систСму лицСнзирования для Java/Java FX ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” C3. И Ρ‚Π°ΠΊ родился Stringer.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ Ρ€Π°Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ коммСрчСских Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π² Ρ‚ΠΎΠΌ числС ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния для Android) завязана Π½Π° строки… ΠžΡ… ΡƒΠΆ эти java.lang.String’s.

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

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ class-Ρ„Π°ΠΉΠ»Π° послС встраивания Π·Π°Ρ‰ΠΈΡ‚Ρ‹:

Плюс упомянутая Π²Ρ‹ΡˆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ пСсочницы: Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ использования reflection, Π·Π°Ρ‰ΠΈΡ‚Π° private-ΠΏΠΎΠ»Π΅ΠΉ классов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π·Π°Ρ‰ΠΈΡ‚Π° final-ΠΏΠΎΠ»Π΅ΠΉ классов ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠœΡ‹ считаСм, Ρ‡Ρ‚ΠΎ функция ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ строк Π½ΡƒΠΆΠ½Π° практичСски ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, Π° для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ своих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΎΡ‚ ΠΊΡ€Π°ΠΆΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Stringer позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ срСду Π²Π½ΡƒΡ‚Ρ€ΠΈ Java-прилоТСния, Π½ΠΎ эта Ρ‚Π΅ΠΌΠ° достойна ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поста…

Π’ настоящСС врСмя ΠΌΡ‹ занимаСмся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Stringer для Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

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

HackWare.ru

Π­Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Ρ…Π°ΠΊΠΈΠ½Π³ ΠΈ тСстированиС Π½Π° ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅, информационная Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

Как ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JavaScript ΠΊΠΎΠ΄

НуТно Π»ΠΈ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JavaScript

JavaScript ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π²Π΅Π± Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ доступСн ΠΈΠΌ для изучСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий. Если Π²Ρ‹ задались вопросом Β«Π—Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ JavaScript?Β», Ρ‚ΠΎ сущСствуСт мноТСство ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ рСкомСндуСтся Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ JavaScript ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅!

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

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: скачиваСтся с сСрвСра быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€, врСмя выполнСния (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ) такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΊΠΎΠ΄Π° Π² исходном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅.

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

Π˜Ρ‚Π°ΠΊ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚.

ΠžΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: (ΠΎΡ‡Π΅Π½ΡŒ) Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΏΠ°Π΄Π°Π΅Ρ‚. Π’ обфусцированный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ самозащиту ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ бСссмыслСнныС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сильно услоТнят Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·.

Π’Ρ‹Π²ΠΎΠ΄: обфусцируйтС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅Ρ‚ смысла ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ популярных JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ Ρ‚Π°ΠΊ общСдоступны Π² исходном Π²ΠΈΠ΄Π΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ обфускации JavaScript

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты ΠΈ способы Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JavaScript скода.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ btoa ΠΈ atob

Π’ простых случаСв для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ парсСров Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ инструмСнты обфускации ΠΈ достаточно просто Β«ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒΒ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строки.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ практичСски ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Мой сайт kali.tools стали ΠΏΡ€ΠΎΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅, Ρ‚. Π΅. выводится содСрТимоС сайта ΠΈ Π² Π½Ρ‘ΠΌ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ всС ссылки Π½Π° Ρ‡ΡƒΠΆΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΏΠΎ ссылкам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ оставался Π½Π° этом постороннСм сайтС.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сайт копировался ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, вмСстС со всСми скриптами, Ρ‚ΠΎ достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ провСряСт, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° страница, ΠΈ Ссли эта страница Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅Π½Π΅ kali.tools, Ρ‚ΠΎ дСлаСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° https://kali.tools.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ проксировании всС упоминания kali.tools Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° Π§Π£Π–ΠžΠ™_Π”ΠžΠœΠ•Π.ru, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠ΄ прСвращался Π²:

Код ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Π½ΠΎ нСдостаточно просто ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ!). Но Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ строку Β«kali.toolsΒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ btoa ΠΈ atob.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ btoa ΠΈ atob ΡΠ²Π»ΡΡŽΡ‚ΡΡ встроСнными функциями JavaScript ΠΈ всСгда доступны.

Ѐункция btoa ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строку Π² Π½Π°Π±ΠΎΡ€ символов (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Base64), Π° функция atob выполняСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия Π² Π΄Π²ΡƒΡ… строках:

Π˜Ρ‚Π°ΠΊ, посмотрим, Π²ΠΎ Ρ‡Ρ‚ΠΎ прСвратится строка Β«https://kali.toolsΒ»:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΌΠΎΡ‘ΠΌ простом ΠΊΠΎΠ΄Π΅ Π΄Π΅Π»Π°Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ atob ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ этой строки, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

Π”Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ β€” провСряСт Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅ сайт Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΈ Π² случаС Ссли это Π½Π΅ kali.tools, Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ Π½Π° kali.tools. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈ проксировании сайта, парсСры Π½Π΅ видят строку kali.tools ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°.

JavaScript Obfuscator

JavaScript Obfuscator β€” это ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠΉ обфускатор с мноТСством ΠΎΠΏΡ†ΠΈΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript Obfuscator Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ JavaScript Obfuscator ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ Β«ΠžΡ‚Π»Π°Π΄ΠΊΠ°Β» Π² Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Π²Π΅Π±-мастСра Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ°Ρ‚ΡŒ), самозащиту ΠΊΠΎΠ΄Π° (вставка бСссмыслСнных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€.). Π£ JavaScript Obfuscator мноТСство Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΎΠΏΡ†ΠΈΠΉ подстройки процСсса обфускации.

Π”Π°Π½Π½Ρ‹ΠΉ инструмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊ графичСский интСрфСйс, Ρ‚Π°ΠΊ ΠΈ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

JavaScript Obfuscator ΠΎΠ½Π»Π°ΠΉΠ½

ВмСсто установки Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ сСрвис ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠ½ располоТСн ΠΏΠΎ адрСсу: https://obfuscator.io/

Установка JavaScript Obfuscator

Установка Π² Kali Linux

Установка Π² BlackArch

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ графичСский интСрфСйс JavaScript Obfuscator

Установка Π²Π΅Π± интСрфСйса JavaScript Obfuscator Π² Kali Linux

ПослС этого Π²Π΅Π±-интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ адрСсу http://localhost:3000/

Установка Π²Π΅Π± интСрфСйса JavaScript Obfuscator Π² BlackArch

ПослС этого Π²Π΅Π±-интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ адрСсу http://localhost:3000/

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΎΠΏΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запуска JavaScript Obfuscator Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π½Π° страницС https://kali.tools/?p=5621

Π§Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JavaScript ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ»Π΅ script.js:

НапримСр, с опциями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄:

ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. javascript obfuscator. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java-javascript obfuscator. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° javascript obfuscator. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС "java obfuscation", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

JSFuck

JSFuck это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ обфускатор, любой JavaScript ΠΊΠΎΠ΄ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ записью всСго ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ символов, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ []()!+

ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. jsfuck. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java-jsfuck. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° jsfuck. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС "java obfuscation", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Вакая запись ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠΏΠΈΠΊ сильнСС, Ρ‡Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ рассмотрСнного Π²Ρ‹ΡˆΠ΅ JavaScript Obfuscator. Но, Π½Π° самом Π΄Π΅Π»Π΅, обфусцированный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΊ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, инструмСнтом JStillery.

Установка JSFuck

Установка Π² Kali Linux

ПослС этого JSFuck Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ адрСсу http://localhost:8181/

Установка Π² BlackArch

Установка Π² Windows

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρ„Π°ΠΉΠ» index.html ΠΈΡ… Π°Ρ€Ρ…ΠΈΠ²Π°.

НСзависимо ΠΎΡ‚ способа установки, Π² Ρ„Π°ΠΉΠ»Π΅ index.html рСкомСндуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ смоТСтС Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ для обфускации Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ строки, Π½ΠΎ ΠΈ большиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°.

Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ! Но это Π½Π΅ всё! Автор JSFuck ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Ρ€Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠΎΠ·Π³:

Π­Ρ‚ΠΈ ΠΊΡ€Π°ΠΉΠ½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² ΠΊΠΎΠ½Ρ†Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅ΡŽΡ‚ большС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (Ρ‡Π΅ΠΌ практичСскоС) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Онлайн сСрвис обфускации ΠΊΠΎΠ΄Π°

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ стойкости ΠΊ дСобфускации являСтся довольно слабым ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дСобфусцирован инструмСнтами, рассмотрСнными Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ «ДСобфускация JavaScript ΠΊΠΎΠ΄Π°Β».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для обфускации:

ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. javascript obfuscate. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java-javascript obfuscate. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° javascript obfuscate. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС "java obfuscation", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

ВсС ΠΎΠ½Π»Π°ΠΉΠ½ сСрвисы обфускации JavaScript

UglifyJS

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ UglifyJS ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ справляСтся с ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° JavaScript.

Установка UglifyJS

Установка Π² Kali Linux

Установка Π² BlackArch

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запуска (для сТатия ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ redir.js):

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ исходного ΠΊΠΎΠ΄Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

Π£ Π΄Π°Π½Π½ΠΎΠ³ΠΎ инструмСнта ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ†ΠΈΠΉ настройки, ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π½Π° страницС https://kali.tools/?p=5594

slimit ΠΈ python-jsmin

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ slimit ΠΈ python-jsmin ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Python для сТатия исходного ΠΊΠΎΠ΄Π° JavaScript.

Установка slimit

Π’ Kali Linux:

Π’ BlackArch:

Установка python-jsmin Π² BlackArch:

Бамая слоТная обфускация JavaScript

Π― ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ JSFuck ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» самыС Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ JavaScript, ΠΈΡ… список Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π½Π° сайтС http://aem1k.com/. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠ΄, написанный тайскими символами:

Код, написанный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исков:

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Π³ΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. slide 67. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java-slide 67. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° slide 67. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС "java obfuscation", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’ послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ Π½Π΅ смоТСтС ΡƒΠΊΡ€Π°ΡΡ‚ΡŒ JavaScript ΠΊΠΎΠ΄ копипастой!

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

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ 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 ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅

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

X-files Π² Java: обфускация ΠΈ Π²ΠΈΠ΄Ρ‹ ΡˆΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. Java Deep 12 5020 17c8a3.10 site. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java-Java Deep 12 5020 17c8a3.10 site. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Java Deep 12 5020 17c8a3.10 site. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² любой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ поисковой систСмС "java obfuscation", Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€Ρ‹Ρ‚ΡŒ с дСсяток ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° эту Ρ‚Π΅ΠΌΡƒ. Π― остановил свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ yGuard. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказался Π² Π½Π°Ρ‡Π°Π»Π΅ списка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска. Π—Π½Π°Ρ‡ΠΈΡ‚ развиваСтся ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спросом. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π° стало Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ встраиваСтся Π² сборщик Ant, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своСм ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠ΅. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ здСсь. Π’ΠΎΡ‚ кусок build.xml, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ jar-Π°Ρ€Ρ…ΠΈΠ²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π½Π΅ΠΊΠΈΠΉ java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹ΠΉ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±Π°Π·ΠΎΠ²Ρ‹Π΅ способы обфускации

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

А Π²ΠΎΡ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ измСнСния исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ простым Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ Π² IDE. НапримСр, двумя пСрСимСнованиями ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ понятный класс:

Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ писанину:

ΠŸΡ€ΠΈ компиляции java-классов компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ javac сохраняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… строк исходного Ρ„Π°ΠΉΠ»Π° ΠΈ самом исходном Ρ„Π°ΠΉΠ»Π΅, Π° ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ.

Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ догадались: пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ способы, ΠΎΠ±ΡŠΠ΅Π΄Π΅Π½Ρ‘Π½Π½Ρ‹Π΅ вмСстС, β€” это самый простой способ ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ. Он Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ затрудняСт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊΠΎΠΌ, Π½ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ скрываСтся.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ способы обфускации

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΠ΄ ΡˆΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² измСняСт Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (flow obfuscation). Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΈ этом Β«ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚Β» конструкции Π²Ρ‹Π±ΠΎΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, if ΠΈ switch) ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, for ΠΈ while). Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π» прямых Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π² языкС Java, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊΠΎΠ².

НаконСц, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²ΠΈΠ΄ ΡˆΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² измСняСт структуры Π΄Π°Π½Π½Ρ‹Ρ… (structural obfuscators). Π”ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² наслСдования. НапримСр, Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… классов. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΌ являСтся Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ классов Π½Π° нСсколько частСй. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° части ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ для массивов. Π’ Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы строковых констант ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ± ΡƒΠΆΠ΅ навСрняка всСх Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ.

Π¨ΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ структур Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΡˆΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ИспользованиС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ способа ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ вмСстС Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ услоТняСт ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ восстановлСниС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° становится практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ Π»ΡŽΠ±ΡΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСкрСтныС слуТбы, Π½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Казалось Π±Ρ‹, Π° ΠΈΠΌ Π·Π°Ρ‡Π΅ΠΌ? ΠŸΡ€ΠΎΡΡ‚ΠΎ jar-Ρ„Π°ΠΉΠ» послС обфускации становится мСньшС Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅, вСдь Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈΠΌΡ‘Π½ классов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚.

А Ρ‡Π΅ΠΌ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° обфускация? ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях!

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

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

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