ProGuard ile OBF Atma Rehberi (Adım Adım ve Açıklamalı)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

MrLexia

Skysetups | skysetups.com.tr |
Yasaklandı
Katılım
27 Mart 2020
Mesajlar
193
Elmaslar
60
Puan
9.005
Yaş
24
Konum
İstanbul
Minecraft
MrLexia

Discord:

mrlexia

ProGuard ile OBF Atma Rehberi (Adım Adım ve Açıklamalı)


Merhaba arkadaşlar,
Java veya Android projelerinde güvenlik ve kod gizliliği açısından önemli olan ProGuard kullanımı hakkında sade ve detaylı bir rehber hazırlamak istedim. Umarım işinize yarar.




ProGuard Nedir?


Basitçe anlatmak gerekirse, ProGuard Java kodlarını karartmaya (obfuscation), gereksizleri temizlemeye (shrink) ve belli oranda optimize etmeye yarayan bir araçtır. Kodlarınızı yayınlamadan önce okunamaz hâle getirir, yani kısaca “biri APK’nızı decompile ettiğinde kodunuzu anlayamasın” diye çalışır.



1. Android Studio Üzerinden ProGuard’ı Aktifleştirme


ProGuard zaten Android Studio projelerinde hazır gelir. Sadece build.gradle dosyanıza birkaç satır eklemeniz yeterli.

Kod:
buildTypes {    release {    minifyEnabled true        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  }}

Eğer deneme amaçlı debug’da çalıştırmak istersen:


Kod:
<span>debug {<br>    minifyEnabled true<br>    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'<br>}<br></span>



2. ProGuard Kurallarını Yazma (proguard-rules.pro)


ProGuard karartma işlemi sırasında bazı sınıf ve metodları da silebilir. Bu yüzden dikkatli olmak gerekir. Aşağıya örnek bir kural dosyası bırakıyorum:




Kod:
# MainActivity'yi ve tüm metotlarını koru-keep class com.ornek.app.MainActivity
{ *; }# Android kütüphanelerine ait uyarıları bastır-dontwarn android.support.**
# Native metotları koru-keepclasseswithmembernames class *
{    native &lt;methods&gt;;}

Yani, hangi sınıfların ve metotların karartılmaması gerektiğini burada belirtiyoruz.




3. Build Alıp APK Oluşturma (OBF Uygulama)


Karartılmış APK'yı oluşturmak için:


Android Studio üzerinden:
Build > Build Bundle(s) / APK(s) > Build APK(s)


Terminal kullananlar için:

Kod:
./gradlew assembleRelease


APK’lar genelde şu klasöre çıkar:
/app/build/outputs/apk/release/app-release.apk


4. Mapping.txt: Karartma Haritası


Karartılmış kodların karşılıklarını görebileceğiniz dosya:
app/build/outputs/mapping/release/mapping.txt


Burada hangi sınıf/metot neye dönüştürülmüş detaylı olarak yazar. Uygulama hata verirse logları anlamanız için bu dosya önemlidir. Yayınladığınız her sürümün mapping dosyasını saklamanız tavsiye edilir.




5. Ekstra Güvenlik Kuralları (İsteğe Bağlı)

Kod:
proguard
dontusemixedcaseclassnames-overloadaggressively-repackageclasses ''

Bu kurallar kodu daha fazla karartır ama dikkatli olmak gerekir. Her değişiklikten sonra test yapılmadan APK'yı yayına almak risklidir.




Java SE Projelerinde Nasıl Kullanılır?


Android yerine düz bir Java projesi için:


  1. ProGuard’ın resmi sitesinden indir.
  2. JDK’ya ait rt.jar gibi dosyaları classpath'e dahil et.
  3. Komutla çalıştır
Kod:
java -jar proguard.jar @proguard-project.txt



Son Notlar


  • ProGuard, sadece güvenlik değil, performans ve boyut açısından da fayda sağlar.
  • Ama her projede kullanılmadan önce iyi test edilmesi gerekir.
  • Mapping dosyası mutlaka yedeklenmelidir.
 

ProGuard ile OBF Atma Rehberi (Adım Adım ve Açıklamalı)


Merhaba arkadaşlar,
Java veya Android projelerinde güvenlik ve kod gizliliği açısından önemli olan ProGuard kullanımı hakkında sade ve detaylı bir rehber hazırlamak istedim. Umarım işinize yarar.





ProGuard Nedir?


Basitçe anlatmak gerekirse, ProGuard Java kodlarını karartmaya (obfuscation), gereksizleri temizlemeye (shrink) ve belli oranda optimize etmeye yarayan bir araçtır. Kodlarınızı yayınlamadan önce okunamaz hâle getirir, yani kısaca “biri APK’nızı decompile ettiğinde kodunuzu anlayamasın” diye çalışır.


1. Android Studio Üzerinden ProGuard’ı Aktifleştirme


ProGuard zaten Android Studio projelerinde hazır gelir. Sadece build.gradle dosyanıza birkaç satır eklemeniz yeterli.

Kod:
buildTypes {    release {    minifyEnabled true        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  }}

Eğer deneme amaçlı debug’da çalıştırmak istersen:


Kod:
<span>debug {<br>    minifyEnabled true<br>    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'<br>}<br></span>



2. ProGuard Kurallarını Yazma (proguard-rules.pro)


ProGuard karartma işlemi sırasında bazı sınıf ve metodları da silebilir. Bu yüzden dikkatli olmak gerekir. Aşağıya örnek bir kural dosyası bırakıyorum:




Kod:
# MainActivity'yi ve tüm metotlarını koru-keep class com.ornek.app.MainActivity
{ *; }# Android kütüphanelerine ait uyarıları bastır-dontwarn android.support.**
# Native metotları koru-keepclasseswithmembernames class *
{    native &lt;methods&gt;;}

Yani, hangi sınıfların ve metotların karartılmaması gerektiğini burada belirtiyoruz.





3. Build Alıp APK Oluşturma (OBF Uygulama)


Karartılmış APK'yı oluşturmak için:


Android Studio üzerinden:
Build > Build Bundle(s) / APK(s) > Build APK(s)


Terminal kullananlar için:

Kod:
./gradlew assembleRelease


APK’lar genelde şu klasöre çıkar:
/app/build/outputs/apk/release/app-release.apk


4. Mapping.txt: Karartma Haritası


Karartılmış kodların karşılıklarını görebileceğiniz dosya:
app/build/outputs/mapping/release/mapping.txt


Burada hangi sınıf/metot neye dönüştürülmüş detaylı olarak yazar. Uygulama hata verirse logları anlamanız için bu dosya önemlidir. Yayınladığınız her sürümün mapping dosyasını saklamanız tavsiye edilir.





5. Ekstra Güvenlik Kuralları (İsteğe Bağlı)

Kod:
proguard
dontusemixedcaseclassnames-overloadaggressively-repackageclasses ''

Bu kurallar kodu daha fazla karartır ama dikkatli olmak gerekir. Her değişiklikten sonra test yapılmadan APK'yı yayına almak risklidir.





Java SE Projelerinde Nasıl Kullanılır?


Android yerine düz bir Java projesi için:


  1. ProGuard’ın resmi sitesinden indir.
  2. JDK’ya ait rt.jar gibi dosyaları classpath'e dahil et.
  3. Komutla çalıştır
Kod:
java -jar proguard.jar @proguard-project.txt



Son Notlar


  • ProGuard, sadece güvenlik değil, performans ve boyut açısından da fayda sağlar.
  • Ama her projede kullanılmadan önce iyi test edilmesi gerekir.
  • Mapping dosyası mutlaka yedeklenmelidir.
ios uygulamaları yani .ipa içinde çalışır mı
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst