原创 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