首先在Root的手機上安裝Xposed框架,然后新建一個android工程竹挡,不需要添加任何Activity揪罕。
下載Xposed的jar包宝泵,然后在android工程app目錄創(chuàng)建lib文件夾,將jar包放置進入并依賴坎怪。
修改app下面的build.gradle搅窿,將剛添加的jar修改為provided方式
修改manifest文件男应,加入Xposed模板的必要描述
創(chuàng)建一個java類娱仔,在里面寫hook代碼。
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Main implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
//判斷包名是否為要 hook 的應(yīng)用
if(loadPackageParam.packageName.equals("要Hook的應(yīng)用包名"){
//hook 對應(yīng)類的對應(yīng)方法
牲迫、 XposedHelpers.findAndHookMethod("android.widget.TextView", loadPackageParam.classLoader, "setText", CharSequence.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
//將 textView 的 settext 方法的參數(shù)修改成了下面的值耐朴,所以 APP 里面所以的 TextView 控件都會顯示下面的字符串
param.args[0] = "hook....";
}
});
}
}
}
創(chuàng)建assets資源文件目錄,然后在該目錄下創(chuàng)建一個文本文檔盹憎,名字叫做xposed_init,沒有后綴名筛峭。在里面寫上Hookook的包名再加類名。
將Hook模板安裝到手機上陪每,在Xposed installer里面勾選剛安裝上的模板并重啟手機影晓。
針對有應(yīng)用被Hook的風(fēng)險,我們可以進行Hook框架的檢測檩禾。如果有Hook框架的話挂签,就給用戶提示然后退出盼产。
實例代碼
public void getApplications() {
List<PackageInfo> packages =
getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
String name = packageInfo.packageName;
//檢測手機是否裝有 xposed
if(name.contains("xposed.installer")){
/*
相應(yīng)的處理
*/ Log.d("test:","xposed");
}
}
}