2014-11-21 57 views
1

如何掛接BroadcastReceiver中的onReceive方法?使用Xposed框架鉤住BroadcastReceiver

public class RecentsActivity extends Activity 
{ 
    mIntentReceiver = new BroadcastReceiver() 
    { 
    public void onReceive(Context context, Intent intent) 
    { 
     ... 
    } 
    }; 
} 

回答

1

由於廣播接收器是一個抽象類,這是一個內聯類的定義,也許你可以檢索該廣播接收器是這樣的:

for(Class<?> cls : <package_name>.RecentsActivity.class.getDeclaredClasses()){ 
    if(BroadcastReceiver.isAssignableFrom(cls)){ 
     //hook onReceive 
    } 
} 

否則請嘗試使用apktool檢查應用程序smali代碼。

可能有一個名爲RecentsActivity $ N(其中N是數字)的文件。只需執行Class.forName("<packagename>.RecentsActivity$N")並掛接此類onReceive方法。

祝你好運!

+0

謝謝。我會盡快檢查。 – Milek7 2014-12-11 17:12:59

+1

你的提議不起作用,因爲他們試圖在我的應用程序中找到方法,而不是我想要掛鉤的應用程序。 (也許它會工作,當我使用'param.getClass()'而不是'類',但我沒有檢查這一點)。但解決方案非常簡單,通常只使用findAndHookMethod,只能使用smali中的類名,例如。 'com.android.systemui.recent.RecentsActivity $ 1' – Milek7 2014-12-13 10:53:41