Araç ne sağlar?

Manifest, sınıflar, yöntemler ve çağrı ilişkileri programatik olarak incelenebilir. API ve özellikler sürümler arasında değiştiği için betikler belirli sürümle sabitlenmelidir.

Uygulamada nasıl değerlendirilir?

Kendi uygulama sürümlerinizde yeni izin veya sınıf kümelerini karşılaştıran bir analiz raporu oluşturabilirsiniz.

Sınırlar ve yaygın hatalar

Statik çağrı grafiği bütün dinamik yükleme ve reflection davranışını eksiksiz göstermeyebilir.

Kontrol listesi

  • Kütüphane sürümünü sabitleyin
  • Analiz hatalarını ayırın
  • Dinamik akışı ayrıca doğrulayın

Karar verirken

Androguard, Python bilen ekipler için tekrarlanabilir paket incelemesinde değerlidir; kendi başına RASP sağlamaz.

Python otomasyonunda küçük ve denetlenebilir çıktı

İlk otomasyon için bütün uygulamayı puanlamaya çalışmak yerine izin envanteri veya paket kimliği gibi dar bir görev seçin. Girdi dosyasını değiştirmeden inceleyin; ayrıştırma başarısızlığına boş ve başarılı rapor muamelesi yapmayın.

APK içindeki birden çok DEX veya beklenmeyen paket yapısı betiğin varsayımlarını etkileyebilir. Örnek uygulamalarla hata koşullarını deneyin ve kütüphane sürümünü sabitleyin. Ortaya çıkan rapor geliştirme ekibine değişen alanı ve dosya kimliğini göstermelidir.

Bir Python APK envanterinde hangi alanlar olmalı?

Androguard ile bir rapor yazmadan önce çıktı sözleşmesini belirleyin. Paket kimliği, sürüm, izinler ve analiz durumu gibi alanlar başka araçlar tarafından işlenecekse isim ve türleri tutarlı olmalıdır. Araç yükseltmesi bu sözleşmeyi sessizce değiştirmemelidir.

AlanAmacı
Dosyanın SHA-256 özetiRaporu belirli dosya baytlarına bağlamak
Paket ve sürüm bilgisiUygulama envanterinde doğru kaydı bulmak
İzin listesiSürümler arasındaki yetenek değişimini incelemek
Analiz aracı sürümüAPI ve ayrıştırma farkını araştırmak
Durum ve hata açıklamasıBaşarısız analizin temiz sonuç sanılmasını önlemek

Aşağıdaki bağımsız Python örneği yalnızca dosya kimliği üretir; APK manifestini çözümlemez ve güvenlik puanı vermez. Büyük dosyayı bütünüyle belleğe almadan SHA-256 hesaplamak için standart kütüphane kullanır.

from hashlib import sha256
from pathlib import Path
import sys

paket = Path(sys.argv[1])
ozet = sha256()
with paket.open("rb") as dosya:
    for blok in iter(lambda: dosya.read(1024 * 1024), b""):
        ozet.update(blok)
print(ozet.hexdigest())

Bu kimliği Androguard analiz sonucuyla aynı kayda ekleyebilirsiniz. Kullandığınız Androguard sürümünün API belgesini esas alın; eski 3.x örneklerindeki modül yolları yeni sürümlerle aynı olmayabilir. Ayrıştırma hataları testlerle görünür tutulmalıdır.

Kaynaklar ve kapsam

Teknik özelliklerin başvuru noktaları aşağıdadır. Uygulama örneği ve kontrol listesi bu yayın için hazırlanmış değerlendirme önerileridir; bağımsız ürün testi sonucu değildir.

Kaynak seçimi ve yayın ilkeleri