1. 程式人生 > >Xposed Android hook -方法介紹

Xposed Android hook -方法介紹

進入其他應用的程序

建立一個類,繼承IXposedHookLoadPackage類,覆寫handleLoadPackage方法,xposed的該方法在任何應用啟動時都會被呼叫,故可以進入任何應用程式的程序,但是一般只針對某個特定的應用,例如,只要進入qq的程序:

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;

public class XposedInit implements IXposedHookLoadPackage {

    @Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable { if (!loadPackageParam.packageName.contains("com.tencent.mobileqq")) //引數:包名 return; XposedBridge.log("Loaded app: " + loadPackageParam.packageName); } }
ps: XposedBridge.log
Log差不多,Log列印的語句會出現在控制檯,而XposedBridge.log的列印會輸出到xposed框架的啟動程式的日誌功能中,要除錯的話就要到xposed的日誌下檢視log輸出。

攔截某個方法

1.攔截com.tencent.mobileqq.app.message.QQMessageFacade類中的a方法,該方法有2個引數,型別分別是ArrayList、boolean。一般攔截用到的回撥物件是XC_MethodHook。

findAndHookMethod("com.tencent.mobileqq.app.message.QQMessageFacade", loadPackageParam.classLoader, "a"
, ArrayList.class, boolean.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { try { // 在原先方法執行之後要執行的邏輯程式碼 } catch (Throwable t) { XposedBridge.log(t); } } });
ps: 方法的攔截分執行前攔截(beforeHookedMethod)和執行後攔截(afterHookedMethod),顧名思義,一個是在方法執行前先執行我們自己的程式碼,一個是在方法執行後再執行我們自己的程式碼。

2.如果你根本不行讓原來的方法執行,那可以直接對方法的執行邏輯進行替換,回撥時使用XC_MethodReplacement物件進行處理即可。

findAndHookMethod("com.tencent.mobileqq.app.message.QQMessageFacade", loadPackageParam.classLoader, "a", ArrayList.class, boolean.class, new XC_MethodReplacement() {
    @Override
    protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
        try {
            // 直接替換原來要執行的邏輯程式碼
        } catch (Throwable t) {
            XposedBridge.log(t);
        }
    }
});
ps:
    對於回撥過來的引數MethodHookParam param一般有以下2種用處:
    param.args[0]:得到被攔截方法的第一個引數,返回值是Object
    param.getResult():得到被攔截方法的執行結果,返回值是Object

得到所有已經安裝的應用程式

findAndHookMethod("android.app.ApplicationPackageManager", loadPackageParam.classLoader, "getInstalledApplications", int.class, new XC_MethodHook() {
    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
        @SuppressWarnings("unchecked") 
        List<ApplicationInfo> applicationInfoList = (List<ApplicationInfo>) param.getResult();
    }
});

得到上下文

try {
    Class<?> ContextClass = findClass("android.content.ContextWrapper", loadPackageParam.classLoader);
    findAndHookMethod(ContextClass, "getApplicationContext", new XC_MethodHook() {
        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            super.afterHookedMethod(param);
            if (applicationContext != null)
                return;
            applicationContext = (Context) param.getResult();
            XposedBridge.log("CSDN_LQR-->得到上下文");
        }
    });
} catch (Throwable t) {
    XposedBridge.log("CSDN_LQR-->獲取上下文出錯");
    XposedBridge.log(t);
}

未完待續。。。
原文連結(點選文字進入)

相關推薦

Xposed Android hook -方法介紹

進入其他應用的程序 建立一個類,繼承IXposedHookLoadPackage類,覆寫handleLoadPackage方法,xposed的該方法在任何應用啟動時都會被呼叫,故可以進入任何應用程式的程序,但是一般只針對某個特定的應用,例如,只要進入qq的程序

android hook方法收集及選擇優化

android有些東西需要收集下應用app的執行情況,比如網路請求等;這些工作在底層執行比較好,這樣java層不需要動;根據這些需要收集了下當前網路上已有的方法: 1.android hook 框架 ADBI ,需要ptrace ,root許可權執行; 2.androi

Android Socket 常用方法介紹

try {/***第一種:客戶端Socket通過構造方法連線伺服器***///客戶端Socket可以通過指定IP地址或域名兩種方式來連線伺服器端,實際最終都是通過IP地址來連線伺服器//新建一個Socket,指定其IP地址及埠號Socket socket = new Socket("192.168.

Android Hook框架Xposed詳解

1.2 Mechanism :原理 1.2.1 Zygote 在 Android 系統中,應用程式程序都是由 Zygote 程序孵化出來的,而 Zygote 程序是由 Init 程序啟動的。 Zygote 程序在啟動時會建立一個 Dalvik 虛擬機器例項,每當它孵化一個新的應用程式程序時,都會將

Android Hook框架Xposed入門

轉:http://chendd.com/blog/2016/05/15/learn_xposed/ 一.基礎知識        Xposed是Android平臺上較為出名的一個開源框架。在這個框架下,我們可以載入很多外掛App,這些外掛App可以直

xposedhook自身apk之外的apk中的方法

被hook的apk正常顯示的介面 其中,在查詢資料庫結束之後會呼叫MainActivity中的finishSetting()方法,隱藏progressbar、顯示相對應的listview並更新listview中的內容 private void finishSetting

Android Hook神器——XPosed入門(登陸劫持演示)

如果想飛得高,就該把地平線忘掉。 前段時間寫了一篇有關於CydiaSubstrate的廣告注入的文章(地址:http://blog.csdn.net/yzzst/article/details/47318751),大家都直呼過癮。但是,真正瞭解這一

1.3 Android中的幾種UI排布方法介紹

關於XML基本語法介紹和XML語法總結可以參考這裡:XML基本語法介紹、XML語法總結。 在Android中,提供了一種非常簡單、方便的方法用於控制UI介面。該方法採用XML檔案來進行介面佈局,從而將佈局介面的程式碼和邏輯控制的Java程式碼分離開

Android:Intent介紹 & 使用方法

前言 Intent在Android開發的應用非常常見,今天我就帶給大家簡單講一下Intent的相關知識及其用法。 目錄 1. 定義 意圖,描述的是應用的動作 &

Android中getChildAt()方法介紹

getChildAt: 官方文件: public View getChildAt (int index) Returns the view at the specified position in the group. Parameters index

Android逆向之旅---破解某支付軟體防Xposedhook功能檢測機制過程分析

一、情景介紹最近想寫幾個某支付軟體的外掛,大家現在都知道現在外掛大部分都是基於Xposed的hook功能,包括之前寫了很多的某社交軟體的外掛,所以不多說就直接用Jadx開啟支付軟體之後然後找到想要hoo

Android智慧指標SP WP使用方法介紹

Android手機作業系統既然是開源的作業系統。那麼在具體的資料夾中就會存放著各種相關功能的開原始碼。我們在使用的時候可以根據這些原始碼進行相應的修改就能輕鬆的完成我們所需的功能。在這裡大家就一起來看看Android智慧指標的相關原始碼解讀以及應用方法。 在Androi

Android EditText的屬性和方法介紹使用及值得注意的點

一、EditView屬性詳細介紹: 屬性名稱 描述 android:utoLink 設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。 可選值(none/web/email/phone/map/all)。 這裡只有在同時設定tex

android hook技術-Xposed框架 幫你輕鬆應對支付寶2016晒賬單

一、支付寶2016年賬單。 最近幾天微信朋友圈充斥著各式的支付寶2016賬單,對於程式設計師屌絲來說打開發現年度消費9W+,和他們動輒十幾萬的消費沒得比,細看更有80%的消費還都是還信用卡,頓時萬念俱灰啊!!!  有木有!!! 突然看到有人發出了負數的賬單,也是醉了。。。看

android選單項單擊事件方法介紹

響應選單項的單擊動作: 一、實現OnMenuItemClickListener介面,再實現此介面的OnMenuItemClick(MenuItem item)方法; 二、使用Activity類的onOptionsItemSelected(MenuItem item)和onM

Android主流HOOK框架介紹與應用--遊戲破解遊戲外掛的必殺技

概述 使用HOOK方案主要是在分析的時候會經常用到,雖然二次打包重新修改程式碼也可以做到,但是一方面效率低,另一方面如果APP有校驗的邏輯就需要進一步繞過,總體還是比較費時費力。所以,通過動態HO

Android逆向分析之Xposedhook技術

轉載自:http://blog.csdn.net/qq_18870023/article/details/51753587 Android逆向工程裡常用到的工具除了的dex2jar,jd-gui,  Apktool之外還有一個Xposed。 這個工具是一個在不修改AP

Android中圖片圓形設定三種方法介紹

Android開發中經常會用到圓形圖片,比如在使用者頭像設定,現在提供三種主要實現方式: 方案一:使用第三方影象框架 Fresco 1、新增依賴 dependencies { compile 'com.facebook.fresco:f

Android程式除錯方法介紹

靜態除錯 適用於:通過列印變數的值來檢視某一時刻值是否正確 Toast(Snack

Android安全機制介紹

backup 可能 mbed 集合 應用程序 linux用戶 內存空間 bin 實施 Android的安全機制包含下面幾個方面: ? 進程沙箱隔離機制。 ? 應用程序簽名機制。 ? 權限聲明機制。 ? 訪問控制機