首頁>技術>

通過資料庫,能做的事情還是很多的,比如檢視資料資訊,檢視許可權,甚至於搶紅包基於的也是資料庫。 本文基於的APK是領跑娛樂,一個賭博類的APK。如果需要安裝包的可以關注我,不要做非法的事情。

準備條件

Android手機需要ROOT,本文基於Android 10。

資料庫

Android大部分使用的資料庫都是SQLite3。

SQLite是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。SQLite 是在世界上最廣泛部署的 SQL 資料庫引擎。SQLite 原始碼不受版權限制。

檢視資料庫

通過下面的命令可以檢視指定包名應用的資料庫儲存資訊(包括儲存的SQL語句)。

adb shell dumpsys dbinfo com.lingpao.lpcf622b

執行結果如下:

操作資料庫

在Android中/data/data/packageName是用來存放應用程式的資料的。資料庫資訊在databases目錄下面。

使用sqlite3進入sqlite終端,檢視資料庫資訊。

常用的命令:

.tables //顯示所有表.schema //顯示資料庫的schema.schema table_name //顯示錶的schema.headers on //顯示標題欄,即欄位名欄,如在檢視資料中資料時,預設select * from table_name 不顯示欄位名。alter table //修改表。改變表名 - ALTER TABLE 舊錶名 RENAME TO 新表名;增加一列 - ALTER TABLE 表名 ADD COLUMN 列名 資料型別 限定符select * from sqlite_master where type="table"; //顯示所有表的結構select * from sqlite_master where type="table" and name="table_name"; //顯示某個表的結構drop table table_name //刪除表.quit //退出.read FileName //執行FileName中的sql同樣的你也可以使用標準的SQL語句,牢記使用分號結束~select語句;delete語句;update語句;insert語句;

當然也可以自己建立資料庫。

Android 程式安裝儲存

android程式安裝後儲存的目錄介紹:

1、android應用安裝涉及到如下幾個目錄

④data/dalvik-cache 將apk中的dex檔案安裝到dalvik-cache目錄下

2、安裝過程介紹:

複製APK安裝包到data/app目錄下,解壓並掃描安裝包,把dex檔案(Dalvik位元組碼)儲存到dalvik-cache目錄,並data/data目錄下建立對應的應用資料目錄。

3、解除安裝過程介紹:

DatabaseSqliteDatabaseSqliteDatabase.open(path[, options]): opens the SQLite v3 database specified by path, a string containing the filesystem path to the database. By default the database will be opened read-write, but you may customize this behavior by providing an options object with a property named flags, specifying an array of strings containing one or more of the following values: readonly, readwrite, create. The returned SqliteDatabase object will allow you to perform queries on the database.SqliteDatabase.openInline(encodedContents): just like open() but the contents of the database is provided as a string containing its data, Base64-encoded. We recommend gzipping the database before Base64-encoding it, but this is optional and detected by looking for a gzip magic marker. The database is opened read-write, but is 100% in-memory and never touches the filesystem. This is useful for agents that need to bundle a cache of precomputed data, e.g. static analysis data used to guide dynamic analysis.close(): close the database. You should call this function when you’re done with the database, unless you are fine with this happening when the object is garbage-collected or the script is unloaded.exec(sql): execute a raw SQL query, where sql is a string containing the text-representation of the query. The query’s result is ignored, so this should only be used for queries for setting up the database, e.g. table creation.prepare(sql): compile the provided SQL into a SqliteStatement object, where sql is a string containing the text-representation of the query.dump(): dump the database to a gzip-compressed blob encoded as Base64, where the result is returned as a string. This is useful for inlining a cache in your agent’s code, loaded by calling SqliteDatabase.openInline().

下面的程式碼查詢buglydb資料庫資訊:

騰訊 Bugly,是騰訊公司為移動開發者開放的服務之一,面向移動開發者提供專業的 Crash 監控、崩潰分析等品質跟蹤服務。Bugly 能幫助移動網際網路開發者更及時地發現掌控異常,更全面的了解定位異常,更高效的修復解決異常。

SqliteStatement

bind相關的方法通常用在預編譯Sql的語句,代替"?"等萬用字元。

bindInteger(index, value): bind the integer value to indexbindFloat(index, value): bind the floating point value to indexbindText(index, value): bind the text value to indexbindBlob(index, bytes): bind the blob bytes to index, where bytes is an ArrayBuffer, array of byte values, or a stringbindNull(index): bind a null value to indexstep(): either start a new query and get the first result, or move to the next one. Returns an array containing the values in the order specified by the query, or null when the last result is reached. You should call reset() at that point if you intend to use this object again.reset(): reset internal state to allow subsequent queries寫在最後

很多關鍵的資料,比如帳號密碼很多的apk就把他們存在了手機自帶的資料庫中,這樣在提高速度的同時帶來的風險也是很大的,敏感資料最好不用通過手機自身的資料庫進行儲存,如果一定要儲存,可以考慮加密方式儲存,但是這樣速度上的提高就不太明顯了。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 3分鐘短文:Laravel 模型一對一關聯關係這倆啥區別