Obfustring plugin

Obfu...что? Obfustring!

  ObfStr("packageKey").v("UYP'W AO") //      "LET'S GO"
// Зависимости??? // build.gradle(:app) plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'io.github.c0nnor263.obfustring-plugin' } obfustringConf { packageKey = "packageKey" } dependencies { // Core implementation "com.github.c0nnor263:obfustring-core:1.3.2" }// build.gradle(Project) buildscript { repositories{ maven { url 'https://jitpack.io' } } dependencies{ classpath "io.github.c0nnor263:plugin:1.5.5" } } // settings.gradle dependencyResolutionManagement { repositories { maven { url 'https://jitpack.io' } } }

Как его использовать?

// Применяйте аннотацию ObfustringThis к классам со строками, которые необходимо обфусцировать: // Оригинальный код @ObfustringThis class MapsActivity : AppCompatActivity(), OnMapReadyCallback { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) "HELLO" Log.d("TAG", "onCreate: \n \" binding root ${binding.root} binding def $binding def ") } override fun onMapReady(googleMap: GoogleMap) { val sydney = LatLng(-34.0, 151.0) "HI" mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney 5")) } } // Обфусцированный код @ObfustringThis class MapsActivity : AppCompatActivity(), OnMapReadyCallback { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ObfStr("comconboimyapplication").v("LWFPG") //@ | Log.d("TAG", "onCreate: \n \" binding root ${binding.root} binding def $binding def ") Log.d(ObfStr("comconboimyapplication").v("PIM"), ObfStr("comconboimyapplication").v("mzWpqnsq: \n \" twpdtyv jmoa ¦${binding.root}¦ tuabube pre ¦$binding¦ pwt ")) } override fun onMapReady(googleMap: GoogleMap) { val sydney = LatLng(-34.0, 151.0) ObfStr("comconboimyapplication").v("LA") mMap.addMarker(MarkerOptions().position(sydney).title(ObfStr("comconboimyapplication").v("Qmfiqe hz Qmfnpj 5"))) } }

А что там со string templates? Все просто

// Оригинал val app = "MyApplication" val pluginName = "Obfustring" val secretProjectName = "VERY Secret project..." "This $app uses the ${pluginName + "plugin"} with $secretProjectName" //Обфускация val app = ObfStr("packageKey").v("VyWzprmgerxop") val pluginName = ObfStr("packageKey").v("Xbheszvmre") val secretProjectName = ObfStr("packageKey").v("EYNC Mkgvir erqteix rekt...") ObfStr("packageKey").v("Chkc ¦$app¦ uyiw xft ¦${pluginName + "plugin"}¦ wkdh ¦$secretProjectName¦") /** Что отобразит приложение: * "This MyApplication uses the Obfustring plugin with VERY Secret project..." */

Что плагин игнорирует?

  • строки внутри String template
  • ​аннотации и их содержимое
  • константные значения
  • комментарии, частично
  • escape-символы

Планы на будущее

  • обфускация в байт коде
  • деобфускация
  • флаги детальной настройки плагина
  • возможность генерировать мусор(опционально)
  • переход на mavenCentral()

That's all folks!

Надеюсь этот плагин сэкономит нам кучу времени, избавив всех от шифрования строчек в коде. Пара аннотаций ObfustringThis, и жизнь становится лучше, как ни крути. Дерзайте!)