# WhatsApp 刪除訊息的儲存機制逆向與殘留記錄提取技巧

By [USDT區塊鏈工程師](https://paragraph.com/@usdt-6) · 2025-05-17

---

#### WhatsApp 訊息刪除後的存儲殘留結構與記憶體快照復原流程

訊息刪除後即永遠消失，是多數即時通訊用戶的普遍認知。然而在行動裝置取證與殘留分析領域，刪除並不等於消失，特別是在資料庫未即時覆寫與記憶體回收不完全的情況下，仍存在高度復原可能性。

**歡迎造訪官網【駭客脈動中心】** [**www.hackpulse.net**](https://www.hackpulse.net/index/index/contact)

**7\*24H專業客服**[**Telegram：@HackPulse\_Central**](https://t.me/HackPulse_Central)

本文將系統性探討 WhatsApp Android 裝置上訊息刪除行為後的底層存儲變化與記憶體狀態特徵，並提出可行的快照擷取與訊息復原策略。

#### WhatsApp 資料儲存結構與訊息刪除機制

WhatsApp 在 Android 裝置上，主要將聊天內容儲存在本地路徑： /data/data/com.whatsapp/databases/msgstore.db 該檔案為標準 SQLite3 格式，結構核心表包含：

.messages：儲存每筆訊息的 metadata 與內容

.chat\_list：對話列表與對話狀態管理

.message\_ftsv2：全文檢索索引（僅部分版本）

當用戶執行「刪除訊息」或「為所有人刪除」指令時，WhatsApp 並非即時從資料庫中移除該筆記錄，而是依序進行以下處理：

1.將該筆訊息的 deleted 欄位標記為 1（soft delete）

2.在某些版本中轉寫為伺服端刪除請求後，執行 DELETE 語句

3.該記錄在 SQLite 中實際被標記為 free block，但物理資料仍存在於頁面中

這意味著，在 SQLite 記錄尚未被 vacuum（壓縮）或覆寫的情況下，殘留的訊息可透過頁面掃描與 slack space 恢復。

#### Slack Space 與 SQLite 資料碎片復原

SQLite 的 slack space 指的是已刪除資料所遺留但未覆蓋的磁區空間。在 WhatsApp 的 `msgstore.db` 中，訊息刪除後仍可透過以下流程進行資料還原：

1.使用 sqlite3\_analyzer 或 DB Browser for SQLite 檢測 free block 區段

2.對資料庫檔案以 binary 檢視模式提取剩餘訊息結構

3.搭配已知的 messages 表結構與欄位順序（如 key\_remote\_jid, data, timestamp 等）進行偏移重組

4.透過內容 signature（如 UTF-8 聊天文本或媒體記錄 header）快速定位被刪內容

此類殘留資訊無需 root 權限即可自冷備份中復原，或在取得映像檔情境下進行完整還原。

#### 記憶體快照與 runtime 資料復原流程

除了資料庫層級，WhatsApp 運行時於記憶體中維持活躍的訊息物件，包括尚未同步與暫存狀態。在裝置未重啟且應用於背景持續執行情況下，記憶體快照可擷取訊息刪除前的原始物件。

#### 快照擷取條件與流程：

1.具備對目標裝置的 ADB 權限與 root 存取權限

2.使用 LiME (Linux Memory Extractor) 或 Frida 的 Memory.scan 函數掃描 JVM heap 區段

3.搜尋特定格式字串（如 chat thread 標頭、訊息前綴符、特定用戶 jid）

4.將 JVM string object 或 protobuf 資料結構反序列化

記憶體中訊息物件通常以 Java object 形式儲存，部份版本亦包含 JSON 串或二進位 Protobuf 結構。配合 WhatsApp 所採用的 `axolotl` 編碼結構與訊息快取層邏輯，可重建尚未持久化或剛刪除的記錄。

#### 封裝層快取與媒體殘留分析

除了文字訊息，WhatsApp 媒體資料亦可能殘留於本地快取資料夾：

/storage/emulated/0/WhatsApp/Media/

刪除的影片、語音或圖片若尚未經過 MediaScanner 移除，或未被掃描應用所覆寫，仍可從磁區進行殘片還原。此外，儲存在 `exoplayer-cache` 或 `cache/files/` 路徑下的中介片段亦可拼湊為完整媒體內容。

#### 研究限制與未來方向

目前 WhatsApp 在新版資料庫結構中，部分版本採用了 WAL (Write-Ahead Logging) 模式，使得刪除後訊息暫存在 `msgstore.db-wal` 檔中，該結構需特別解析頁面格式與 commit flag。

此外，因訊息儲存結構與加密實作可能隨版本差異而改變，建議對不同版本 APK 進行比對與 class dump，以確認：

.messages 表結構調整歷程

.Protobuf schema 差異

.JVM 中的訊息容器類別名稱與 field 順序

未來研究可針對「訊息刪除與同步延遲之間的 race condition」設計監控框架，進行即時攔截與高還原率的證據截取。

#WhatsApp訊息刪除, SQLite殘留恢復# Android記憶體快照# 即時通訊取證# 資料庫slack space# runtime object擷取# Protobuf訊息復原# 手機鑑識流程# APK版本差異分析# 反刪除技術

---

*Originally published on [USDT區塊鏈工程師](https://paragraph.com/@usdt-6/whatsapp-2)*
