使用代理機制進行API Hook進而達到方法增強是框架的常用手段,比如J2EE框架Spring通過動態代理優雅地實現了AOP編程,極大地提升了Web開發效率;同樣,插件框架也廣泛使用了代理機制來增強系統API從而達到插件化的目的。本文將帶你了解基於動態代理的Hook機制。 閱讀本文之前,可以先 ...
在前面的文章中我們介紹了DroidPlugin的Hook機制,也就是代理方式和Binder Hook 插件框架通過AOP實現了插件使用和開發的透明性。在講述DroidPlugin如何實現四大組件的插件化之前,有必要說明一下它對ActivityManagerServiche以及PackageManagerService的Hook方式 以下簡稱AMS,PMS 。 ActivityManagerServ ...
2016-04-13 16:41 0 1973 推薦指數:
使用代理機制進行API Hook進而達到方法增強是框架的常用手段,比如J2EE框架Spring通過動態代理優雅地實現了AOP編程,極大地提升了Web開發效率;同樣,插件框架也廣泛使用了代理機制來增強系統API從而達到插件化的目的。本文將帶你了解基於動態代理的Hook機制。 閱讀本文之前,可以先 ...
上文 Activity生命周期管理 中我們地完成了『啟動沒有在AndroidManifest.xml中顯式聲明的Activity』的任務;通過Hook AMS和攔截ActivityThread中H類對於組件調度我們成功地繞過了AndroidMAnifest.xml的限制。 但是我們啟動 ...
概述 該篇基於AndroidQ,主要介紹系統啟動中的 AMS(ActivityManagerService)的啟動過程。 AMS對四大組件(AndroidQ將activity移到了ActivityTaskManagerService中,但也和AMS相關聯)進行管理和調度。同時,AMS也對進程 ...
前言 做過 Android 開發的童鞋都知道,不能在非主線程修改 UI 控件,因為 Android 規定只能在主線程中訪問 UI ,如果在子線程中訪問 UI ,那么程序就會拋出異常 並且,Android 也不建議在 UI 線程既主線程中做一些耗時操作,否則會導致程序 ANR 。如果我們需要 ...
前言:在上一篇博文《小白也能看懂的插件化DroidPlugin原理(一)-- 動態代理》中詳細介紹了 DroidPlugin 原理中涉及到的動態代理模式,看完上篇博文后你就會發現原來動態代理真的非常簡單,只不過就是實現一個 InvocationHandler 接口重寫一下 invoke 方法 ...
概述 這里主要介紹 PackageManagerService(簡稱PMS)的啟動 和 一個應用的安裝過程。這里只是大致總結,供參考,不少地方同樣需要進一步深入了解學習的。 該篇相關代碼也是基於AndroidQ的。 PMS也是核心服務之一,管理包相關內容,解析 ...
概述 該篇基於Android 10的代碼。在 AMS之AMS的啟動---Android Framework(Android 10) 中已經介紹了,在Android 10中,activity的調度和管理已經從AMS移到了ActivityTaskManagerService中(這里簡稱ATMS ...
WordPress 的插件機制實際上只的就是這個 Hook 了,它中文被翻譯成鈎子,允許你參與 WordPress 核心的運行,是一個非常棒的東西,下面我們來詳細了解一下它。 PS:本文只是簡單的總結一下,更多用法還是要參考文中給出的函數。 鈎子分類 鈎子分為兩種,一種叫做動作(action ...