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çim | AccountsDb 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ümler | Android 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
| Alan | Ne anlatır |
|---|---|
| accounts.name / accounts.type | Hesap 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ı
| Alan | Kodlama | Not |
|---|---|---|
| last_password_entry_time_millis_epoch | Unix epoch, milliseconds | Hesap için en son parola girildiği zaman. |
| debug_table.time | Text "yyyy-MM-dd HH:mm:ss", no time zone | Saat 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ışı
- Her kullanıcı için DE ve CE veri tabanlarını ve varsa eski accounts.db dosyasını toplayın.
- DE ve CE'deki hesapları listeleyip karşılaştırın.
- debug_table kayıtlarını sıralayın ve çağıran UID'leri paketlerle eşleştirin.
- debug zamanlarını UTC olarak değil, yerel saat metni olarak yorumlayın.
- 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
- AOSP — AccountsDb.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
- AOSP — AccountManagerService.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
- AOSP — Environment.java Android Open Source Project (GitHub mirror) · erişim 2026-10-14
- ALEAPP — scripts/artifacts/accounts_ce.py Alexis Brignoni et al. (GitHub) · erişim 2026-10-14
- ALEAPP — scripts/artifacts/accounts_de.py Alexis Brignoni et al. (GitHub) · erişim 2026-10-14
- Support Direct Boot mode Android Developers · erişim 2026-10-14