AndroidİleriHesaplar

Hesap yöneticisi veri tabanları (accounts_ce.db / accounts_de.db)

AccountManagerService depoları: hesap adları ve türleri, CE depolamada kimlik belirteçleri, DE depolamada 64 satırlık hesap işlem günlüğü.

01Konum

  • /data/system_ce/<userId>/accounts_ce.db
  • /data/system_de/<userId>/accounts_de.db
  • /data/system/users/<userId>/accounts.db (pre-N single database, migrated)

02Yanıtladığı sorular

  • Cihazda hangi hesaplar (ör. e-posta, bulut, mesajlaşma) kayıtlıydı?
  • Hesaplar yakın zamanda eklendi, kaldırıldı veya yeniden adlandırıldı mı; hangi çağıran UID tarafından?
  • Bir hesap için en son ne zaman parola girildi?

03Biçim ve sürümler

BiçimAccountsDb tarafından yönetilen SQLite veri tabanları. CE: accounts (name, type, password), authtokens, extras. DE: accounts (_id, name, type, previous_name, last_password_entry_time_millis_epoch), grants, visibility, shared_accounts, meta ve debug_table.
Geçerli olduğu sürümlerAndroid N öncesi sürümler tek bir accounts.db kullanıyordu (PRE_N_DATABASE_VERSION 9); güncel kod bunu DE/CE çiftine taşır. Kimlik bilgisiyle şifrelenmiş (CE) depolama yalnızca kullanıcı cihazın kilidini açtıktan sonra kullanılabilir.

04Temel alanlar

AlanNe anlatır
accounts.name / accounts.typeHesap tanımlayıcısı ve kimlik doğrulayıcı türü.
authtokens (CE)Hesap başına kimlik doğrulama belirteçleri; etkin kimlik bilgisi olarak değerlendirin.
debug_table.action_typeİşlem dizesi; ör. action_account_add, action_account_remove, action_account_rename, action_set_password, action_sync_de_ce_accounts.
debug_table.caller_uid / table_name / _idÇağıranın UID'si, etkilenen tablo ve satır kimliği.
accounts.previous_name (DE)Yeniden adlandırılmış bir hesabın önceki adı.

05Zaman damgaları

AlanKodlamaNot
last_password_entry_time_millis_epochUnix epoch, millisecondsHesap için en son parola girildiği zaman.
debug_table.timeText "yyyy-MM-dd HH:mm:ss", no time zoneSaat dilimi verilmemiş bir SimpleDateFormat ile yazılır: cihazın yerel saat dizesidir. Metin olarak raporlayın ve varsaydığınız sapmayı belirtin.

Ham değerleri Zaman damgası çözücü, yerel saatleri ise Yerel saatten UTC'ye ile çözün.

06İnceleme akışı

  1. Her kullanıcı için DE ve CE veri tabanlarını ve varsa eski accounts.db dosyasını toplayın.
  2. DE ve CE'deki hesapları listeleyip karşılaştırın.
  3. debug_table kayıtlarını sıralayın ve çağıran UID'leri paketlerle eşleştirin.
  4. debug zamanlarını UTC olarak değil, yerel saat metni olarak yorumlayın.
  5. Belirteç ve parola sütunlarının işlenmesini sınırlandırın ve belgeleyin.

07Yorum tuzakları

  • debug_table en fazla 64 satır tutar ve en eski yuvayı yeniden kullanır; eski işlemlerin üzerine yazılır.
  • Debug satırları artık accounts tablosunda olmayan hesap kimliklerini gösterebilir; ALEAPP test imajlarında 306 satırın 192'sinde bunu buldu.
  • Yalnız DE depolama mevcutsa yalnız CE'de bulunan tablolar (belirteçler, parolalar) eksik olur.

09Kaynaklar

  1. AOSP — AccountsDb.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
  2. AOSP — AccountManagerService.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
  3. AOSP — Environment.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
  4. ALEAPP — scripts/artifacts/accounts_ce.py Alexis Brignoni et al. (GitHub) · erişim 2026-10-14
  5. ALEAPP — scripts/artifacts/accounts_de.py Alexis Brignoni et al. (GitHub) · erişim 2026-10-14
  6. Support Direct Boot mode Android Developers · erişim 2026-10-14