原创 Android注入要點記錄

雖然之前注入過android很多次,但所做的事情不過是在別人的框架下做些修改,調調bug,完全沒有徹底消化和掌握注入的知識和技術。所以我決定寫這一篇博文,總結android注入的實現要點。 android設備存在32位和64位之分

原创 Binder native層源碼分析

Binder是Android系統下的IPC通信機制,進程間的通信,包括系統服務的調用,都需要通過Binder來進行。看了很多講解Binder native層運行原理的書和博客,我大概對native層的Binder運行過程有了一個認

原创 Binder native層源碼分析(六):sm返回查詢結果

假設現在有一個客戶端向sm請求MediaPlayer服務,本篇文章分析sm怎麼返回服務的查詢結果,即svcmgr_handler中怎麼處理SVC_MGR_GET_SERVICE請求。 處理SVC_MGR_GET_SERVICE請求

原创 Binder native層源碼分析(三):BpBinder通信類

在源碼分析(一)的結尾,addService函數中構造了數據包Parcel data併發送給了service manager,如下: //將服務名和MediaPlayerService寫入Parcel data.w

原创 Binder native層源碼分析(四):Binder驅動將數據發往sm

在源碼分析(三),數據最終由ioctl調用交由驅動處理。android源碼不包括驅動代碼,驅動代碼需要另外下載。網上有很多下載驅動代碼的方法。如果嫌麻煩可以直接在github隨便找一個手機品牌的驅動代碼下載。 其實驅動層是獨立的一

原创 android abi

以下內容主要總結自書籍,博客和Android Developers 系統調用,API和ABI 系統調用 由於系統有限的資源有可能被多個不同的應用程序間時訪問,因此,如果不加以保護,那麼各個應用程序難免產生衝突,並且讓應用程序管理資

原创 Binder native層源碼分析(一):media_service的啓動

本篇文章分析mediaserver的啓動過程中獲取servicemanager以及註冊服務的過程。希望這篇文章能夠幫助大家弄清楚系統服務對BpBinder的封裝過程,同時爲之後分析Binder通信過程做好通信數據上的準備,即讓大家

原创 Binder native層源碼分析(五):sm對數據的接收以及處理

我們從servicemanager的主函數開始 main和binder_loop //\frameworks\native\cmds\servicemanager\service_manager.c int main() {

原创 android智能指針sp和wp

普通指針的使用隱患和智能指針的解決辦法 普通指針在使用過程中的三個隱患: 指針沒有初始化。 指針沒有釋放。 釋放後沒有置空。 智能指針的解決辦法: 構造函數中初始化。 使用計數器,計數器爲0時釋放。 將指針封裝在智能指針中,

原创 Binder native層源碼分析(二):Parcel類

Parcel是Binder通信的數據包,通過分析Parcel類,我們就可以知道Binder通信中究竟在傳輸什麼數據,進而對Binder有一個更深入的理解。 在上篇博文中,addService函數往Parcel data寫入了以下數

原创 Binder native層源碼分析(七):BBinder

Binder驅動部分的主要內容已經基本分析完了,現在回到native層,把之前源碼分析三中未分析的部分拿出來分析一遍,注意目的是說明BBinder的作用。我把這一部分內容放在這裏分析其實是有原因的,因爲如果不理解Binder驅動部

原创 Android got hook實現

ELF基本知識 講解got hook之前,我們首先要對ELF的文件結構有一個基本的認識。ELF中的內容主要包括代碼、數據,以及符號表,字符串等。這些信息以”節"(section)的形式存儲。我習慣把節稱爲段。常見的段比如代碼段.t

原创 Pixel2XL Android8.0 root過程記錄

進入開發者模式 點擊setting->system->about phone,然後多次點擊build number。 進入開發者模式後把USB debugging打開。 刷機 從官網上下載pixel2xl對應的鏡像 連接外網,進

原创 BpBinder和BBinder

BpBinder和BBinder在Binder通信機制中屬於通信層,也就是說這兩個類是真正幹實事的,Binder通信需要通過這兩個類來進行。 BpBinder是客戶端用來與服務交互的代理類,也就意味着BpBinder本身不實現通信功能,通

原创 Parcel分析

Parcel是Binder通信的中的數據包,通過分析Parcel類,我們就可以知道Binder通信中究竟在傳輸什麼數據,進而對Binder有一個更深入的理解。 成員變量 這裏列舉了一些比較關鍵的成員變量。 mData:數據指針 mData