Android資料庫加解密逆向分析(一)

2021-08-02 00:04:31 字數 1337 閱讀 5515

最近事比較多,所以最近一段時間也沒更新部落格了,現在終於有時間來寫部落格,美滋滋。

接下來進入正文:

然而,對於這樣一款優秀的資料庫卻有乙個致命的缺陷:不支援加密。這就導致儲存在sqlite中的資料可以被任何人輕易地檢視到。如果是普通的資料還好,但是當涉及到一些賬號密碼,聊天內容或者個人資訊的時候,我們的應用就會面臨嚴重的安全漏洞隱患。

所以,需要在開發應用時對我們的資料庫進行加密,目前對android資料庫有兩種加密方式:

1. 對寫入資料庫的資料進行加密

2. 對整個資料庫檔案進行加密

首先是對寫入資料庫的資料進行加密,通過這種方式,一定程度上可以保證資訊不會直接被被人讀取,但是由於其只是對相關的資料進行了加密,資料庫的加密並不徹底,資料庫整體的表結構等的相關資料還是暴露著的,仍然存在洩漏的風險,同時操作也十分地繁瑣。

另一種方式很好的解決了第一種遺留的問題,對整個資料庫進行了加密,他人拿到資料庫檔案後不知道解密方式的話無法對資料庫進行分析。這種方法一般採用第三方加密開源庫,最典型例子就是sqlitecipher開源框架。

如下分別是沒有加密的資料庫,使用第一種方式加密的資料庫和第二種方式加密的資料庫:

圖中被紅框圈出來的是我在聊天時傳送的一張,url就是我傳送的的鏈結,在瀏覽器中輸入該鏈結便可以看到對應的:

而下圖就是我的聊天視窗:

可以看到沒有加密的資料庫完全是在裸奔,我們的相關資訊毫無保留的暴露了出來,很容易造成資訊洩露,所以需要對資料庫進行加密。

同時在lib目錄下可以找到對應的用於資料庫加密的so,這裡是libwechatcommen.so檔案:

使用ida開啟可以看到相關對資料庫操作的sqlite3函式:

總結:

本篇文章是此次android資料庫加密逆向系列的引入,主要介紹了現在android資料庫加密的兩種主要實現方式,同時通過對比沒有加密的資料庫以及使用這兩種方式加密的資料庫,更加形象的讓大家理解android中的資料庫加密。

資料庫字段加解密處理

解決場景 需要對應用資料儲存時採取加密,比如手機號碼 位址 證件號 示例 測試用表 create table sys user user id bigint 20 not null auto increment,user name varchar 128 default null,user mobi...

druid連線資料庫加解密

import com.alibaba.druid.filter.config.configtools import com.alibaba.druid.pool.druiddatasource 用來解密配置中的密文 重點配置,在這裡擴充套件使用者名稱的解密 setusername name 方法對應...

加 解密資料庫使用者 密碼的類設計

可以用來加 解密資料庫使用者 密碼等 using system using system.io using system.text using system.security.cryptography namespace mon static protected byte byteiv static...