利用xposed修改微信显示余额

利用xposed修改微信显示余额

package com.dahai.demo;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Field;

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 AmountHook implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        
        if (lpparam.packageName.equals("com.tencent.mm")) {

            Class clazz = lpparam.classLoader.loadClass("com.tencent.mm.plugin.mall.ui.MallIndexBaseUI");
            XposedHelpers.findAndHookMethod(clazz, "bJ", new XC_MethodHook() {
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                }

                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    Object thisObject = param.thisObject;
                    try {
                        Class superclass = thisObject.getClass().getSuperclass();

                        Field pjt = superclass.getDeclaredField("pjt");
                        pjt.setAccessible(true);
                        TextView textView = (TextView) pjt.get(thisObject);
                        SharedPreferences preferences = textView.getContext().getSharedPreferences("DH_HOOK", Context.MODE_PRIVATE);
                        String amount = preferences.getString("Amount", "");
                        if (!TextUtils.isEmpty(amount)) {
                            textView.setText(String.format("¥%s",amount));
                        }
                    } catch (Exception e) {
                        Log.e("HHH", "afterHookedMethod: ", e );
                    }
                }
            });

            Class uploadUI = lpparam.classLoader.loadClass("com.tencent.mm.plugin.sns.ui.SnsUploadUI");

            XposedHelpers.findAndHookMethod(uploadUI, "onPause", new XC_MethodHook() {

                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                }

                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    final Object thisObject = param.thisObject;
                    try {
                        Field svr = thisObject.getClass().getDeclaredField("svr");
                        svr.setAccessible(true);
                        EditText editText = (EditText) svr.get(thisObject);
                        String trim = editText.getText().toString().trim();
                        if (!TextUtils.isEmpty(trim)) {
                            if (trim.startsWith("¥")) {
                                String amount = trim.replace("¥", "");
                                SharedPreferences preferences = editText.getContext().getSharedPreferences("DH_HOOK", Context.MODE_PRIVATE);
                                preferences.edit().putString("Amount",amount).apply();
                                Toast.makeText(editText.getContext(), "神秘代码完成", Toast.LENGTH_SHORT).show();
                            }
                        }
                    } catch (Exception e) {
                        Log.e("HHH", "afterHookedMethod: ", e );
                    }
                }
            });
        }
    }

}

源码GitHub

你可能感兴趣的:(xposed)