Android
Xposed
サーチ…
Xposedモジュールの作成
Xposedは、他のアプリケーションのメソッド呼び出しをフックできるフレームワークです。 APKを逆コンパイルして変更すると、必要な場所に直接コマンドを挿入/変更できます。ただし、後でAPKを再コンパイル/署名する必要があり、パッケージ全体を配布することしかできません。 Xposedを使用すると、メソッドの前後に独自のコードを挿入したり、メソッド全体を完全に置き換えることができます。残念ながら、Xootはrootedデバイスにのみインストールできます。他のアプリやコアAndroidシステムの動作を操作したい場合や、APKの逆コンパイル、再コンパイル、署名の手間を省きたい場合は、必ずXposedを使用してください。
まず、Android Studioにアクティビティのない標準アプリを作成します。
次に、 build.gradleに次のコードを追加する必要があります。
repositories {
jcenter();
}
その後、次の依存関係を追加します。
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
これで、 AndroidManifest.xmlにあるアプリケーションタグの中にこれらのタグを配置して、 Xposedがあなたのモジュールを認識できるようにしなければなりません:
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="YOUR_MODULE_DESCRIPTION" />
<meta-data
android:name="xposedminversion"
android:value="82" />
注:常に82を最新のXposedバージョンに置き換えてください。
メソッドをフックする
IXposedHookLoadPackage
を実装する新しいクラスを作成し、 handleLoadPackage
メソッドを実装しhandleLoadPackage
。
public class MultiPatcher implements IXposedHookLoadPackage
{
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
}
}
このメソッドの中で、フックするアプリケーションのパッケージ名のloadPackageParam.packageName
を確認します。
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
if (!loadPackageParam.packageName.equals("other.package.name"))
{
return;
}
}
コードが実行される前、または後に、メソッドをフックして操作することができます:
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
if (!loadPackageParam.packageName.equals("other.package.name"))
{
return;
}
XposedHelpers.findAndHookMethod(
"other.package.name",
loadPackageParam.classLoader,
"otherMethodName",
YourFirstParameter.class,
YourSecondParameter.class,
new XC_MethodHook()
{
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
Object[] args = param.args;
args[0] = true;
args[1] = "example string";
args[2] = 1;
Object thisObject = param.thisObject;
// Do something with the instance of the class
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
Object result = param.getResult();
param.setResult(result + "example string");
}
});
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow