xposed源碼編譯
『壹』 什麼是xp框架
xp框架即Xposed框架(Xposed Framework),它是一套開源的、在Android高許可權模式下運行的框架服務。
Xposed框架可以在不修改APK文件的情況下影響程序運行(修改系統)的框架服務,基於它可以製作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。
Android中一般存在兩種hook:sdk hook和ndk hook。native hook的難點在於理解ELF文件與學習ELF文件,java層Hook則需要了解虛擬機的特性與java上的反射使用。
另外還存在全局hook,即結合sdk hook和ndk hook,xposed就是一種典型的全局hook框架。
Xposed框架的五個部分:
1、Xposed:
獨立實現了一版Xposed版的zyogte,即生成用來替換/system/bin/app_process的可執行文件,該文件在系統啟動時在init.rc中被調用,啟動Zygote進程。
2、XposedBridge:
Xposed框架的Java部分,編譯輸出為XposedBridge.jar,為開發者提供介面。
3、android_art:
Xposed框架的C++部分,對XposedBridge的補充。
4、XposedTools:
框架編譯工具,因為Xposed和XposedBridge編譯依賴於Android源碼,而且還有一些定製化的東西。
5、XposedInstaller:
Xposed插件管理和功能選擇應用,界面如下圖所示,其功能包括啟動Xposed框架,下載和啟用指定插件,或禁用插件等。
參考資料來源:網路-Xposed框架
『貳』 Android逆向之手機環境配置
該篇文章主要介紹在Android逆向開始之前的 手機環境配置 。其中包括對手機進行 刷機 (根據所需的Android手機型號、Android系統版本進行刷機。這里我以nexus 5 android 6.0.1為例,其他Google系手機型號及刷其他Android版本系統都是類似的);第二個則是安裝Android逆向分析 hook框架山啟卜 (Xposed、frida)及一些常用的基礎插件等。
一、刷機前准備
二、開始對nexus 5刷機(Android 6.0.1)
需要使用低版本的platform-tools進行替代,具體的操作步驟,可以參考以下文章
https://www.jianshu.com/p/d40db7e08e3e
三、刷入第三方recovery(TWRP)到新系統中
四、對剛刷完的Android系統進行root
五、安裝Xposed框架、frida-server 及Android逆向分析中常見的插件
綜上所述,該篇文章主要是使用Android官方的系統鏡像進行刷機,然後安裝旁如配置Android逆向所需的框架及插件。在刷機的時候,我逗穗們也可以選擇自己修改編譯Android系統源碼,再進行刷機,定製我們自己所需的分析環境。
更多精彩內容,請掃碼關注以下公眾號
『叄』 xposed框架是什麼,有什麼作用
Xposed框架(Xposed Framework)是一套開源的、在Android高許可權模式下運行的框架服務,可以在不修改APK文件的情況下影響程序運行(修改系統)的框架服務,基於它可以製作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。
Per APP Setting(為每個應用設置單獨的dpi或修改許可權)、XPrivacy(防止隱私泄露)、對原生Launcher替換圖標等應用或功能均基於此框架。
(3)xposed源碼編譯擴展閱讀
在Android系統中,應用程序進程以及系統服務進程SystemServer都是由Zygote進程孵化出來的,而Zygote進程是由Init進程啟動的,Zygote進程在啟動時會創建一個Dalvik虛擬機實例,
每當它孵化一個新的應用程序進程時,都會將這個Dalvik虛擬機實例復制到新的應用程序進程裡面去,從而使得每一個應用程序進程都有一個獨立的Dalvik虛擬機實例,這也是Xposed選擇替換app_process的原因。
參考資料來源:網路-Xposed框架
『肆』 Xposed鏄浠涔堟剰鎬
xposed鏄涓妗嗘灦錛岃兘涓哄畨鍗撴満鎻愪緵淇鏀圭郴緇熻屾棤闇鐪熸d慨鏀箁om鐨勫姛鑳斤紝姣斿傛浛鎹㈠浘鏍囪屼笉闇瑕佸弽緙栬瘧錛屽苟涓斿嵏杞芥嗘灦鍚庝竴鍒囪繕鍘熺殑搴旂敤錛孹posed妗嗘灦鏄涓嬈懼彲浠ュ湪涓嶄慨鏀笰PK鐨勬儏鍐典笅褰卞搷紼嬪簭榪愯(淇鏀圭郴緇)鐨勬嗘灦鏈嶅姟錛屽熀浜庡畠鍙浠ュ埗浣滃嚭璁稿氬姛鑳藉己澶х殑妯″潡錛屼笖鍦ㄥ姛鑳戒笉鍐茬獊鐨勬儏鍐典笅鍚屾椂榪愪綔銆
『伍』 Xposed是什麼xposed框架怎麼用
一個xda開發的框架,安裝之後,讓許多軟體在此框架裡面運行,比如綠色守護藉助這個框架可以獲得更多的功能,gravitybox必須在這個框架裡面運行,需要root,MIUI禁止使用
『陸』 如何反編譯systemUI.apk
ystemui.apk等特殊軟體的編譯與反編譯步驟如下:
第一:要在你的PC上建立Java的環境,才能執行編譯工作。具體設置方法可參考線刷包移植卡刷包教程。
第二:下載Apktool工具 ,下載後解壓得到apktool文件夾,把裡面的三個文件放在CDM模式(win+R)默認的目錄下。例如,我的是Windows7 32位 我的CDM模式默認目錄是C:\用戶(Users)\Administrator。
第三:如果你是要編譯系統文件的話,請將你要修改的rom里提取framework-res.apk,再用CMD模式「安裝」。(不這樣做會 導致解包錯誤)
安裝方法:把framework-res.apk放在剛才放在C:\用戶(Users)\Administrator文件夾下。cmd模式 執行apktool if framework-res.apk 這個是安裝framework-res.apk
第四:准備工作都做好了,現在就可以反編譯和編譯了。將你要反編譯的apk放在C:\用戶(Users)\Administrator目錄下。(你也可以用指定目錄)cmd模式 執行apktool d XXXX.apk 這個就是反編譯比如反編譯SystemUI就執行 apktool d SystemUI.apk 就可以了(會在當前的目錄下生成SystemUI的文件夾,修改就是在這個文件夾里進行)
注意:1.第三步很重要,很多人不成功就是因為沒做第三步。
2.編輯回去的systemui.apk及framework-res.apk不能直接放回去(framework-res.apk放回去會導致手機不斷重啟systemui.apk放回去會導致手機無上欄)