Soru:
Android bayt kodu doğrulayıcı
Antimony
2013-07-15 10:26:24 UTC
view on stackexchange narkive permalink

Java bayt kodunu (.class) tersine mühendislik yapmayı bu kadar kolay kılan şeylerden biri, JVM'nin doğrulayıcısının bayt kodunun doğrusal tarama yoluyla her zaman sökülebilmesini sağlamasıdır. Talimatlar 0 ofsetten başlayarak ardışık olmalıdır ve bir talimatın ortasına atlayamazsınız.

Ancak bu gönderi Dalvik'in böyle bir bayt kodu doğrulaması yapmadığını ima eder. Yazarlar, görünüşe göre izin verilen bir talimatın ortasına atlamak gibi tüm olağan x86 şenanianlarını yapıyorlar. Bu doğru mu? Android sanal makineleri aslında herhangi bir yükleme süresi bayt kodu doğrulaması yapıyor mu? Değilse neden?

Iki yanıtlar:
thux
2013-09-20 06:03:17 UTC
view on stackexchange narkive permalink

bu tamamen doğru değil. Dalvik bayt kodu da cihazda doğrulanacaktır, ancak bu, çalışma zamanında değil, yükleme sırasında gerçekleşir. Dex dosyasının doğrulanmış ve optimize edilmiş bir sürümü sistemde saklanacak ve dosya sistemi izni ile korunacaktır (cihazınızı rootlamadıkça daha sonra değiştiremezsiniz).

Blogda kullanılan numara post, sınıf başlığında, doğrulayıcıya bu sınıfı atlamasını söyleyen belirli bir bayrak ayarlayabilmenizdir.

Uwe Plonus
2013-07-15 14:05:54 UTC
view on stackexchange narkive permalink

Android ayrıca bayt kodu doğrulamasını da içerir, ancak bu adım cihazdaki sınıf yüklemesinden dex derleyicisine taşınır (J2ME'de benzer şekilde yapıldığı gibi).

Sınıf dosyalarınızı değiştirin (ve paketlemeden önce .apk dosyası) dosyaları değiştirebilir ve referanslı obfuscation tanıtabilirsiniz.

Yani yükleme zamanında başka bir doğrulama yapılmaz.

Dex derleyicisinin özellikleri.

Yükleme süresini iyileştirmek için yükleme anında bayt kodunun doğrulanması kaldırılır (J2ME'de bununla aynı neden) .



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...