第一步:找到當前activity
此處使用的adb命令
adb shell dumpsys activity top > activity_top.txt
也能看到View Hierarchy,整個view樹結構
或者直接得到當前activity
adb shell "dumpsys window | grep mCurrentFocus"
第二步:找到余額控件ID
monitor查看控件ID
查找id為ff3的16進制值:
通過activity_top查看
com.robinhood.ticker.TickerView{46e2cf1 V.ED..... ........ 0,0-105,37 #7f092263 app:id/ff3}
在里面找到元素對應的值,為十六進制值。如上面結果中有這樣一行,可以看到id為'ff3'的值為十六進制值7f092263
第三步:找到余額控件ID所在類
由于Mac的jadx比較卡,內存為4G,修改為8G居然不生效???
我導出了源碼到AS,在AS全局搜索找到WcPayMoneyLoadingView
WcPayMoneyLoadingView
一路跟蹤發現setMoney方法,XPosed走起試試
public class XposedInit implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("========test");
if(lpparam.packageName.equals("com.tencent.mm")){
String className = "com.tencent.mm.plugin.wallet_core.ui.view.WcPayMoneyLoadingView";
XposedHelpers.findAndHookMethod(className, lpparam.classLoader, "setMoney", String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
// param.args[0] = "11111";
XposedBridge.log("beforeHookedMethod");
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log("========afterHookedMethod");
// Activity activity = (Activity) ((View) param.thisObject).getContext();
// View view = activity.findViewById(0x7f092263);
// XposedHelpers.callMethod(view, "setText", "11111111");
XposedHelpers.callMethod(param.thisObject,"setNewMoney","100001");
}
});
}
}
}
可以在beforeHookedMethod直接修改setmoney的參數
也可以找到那個控件直接settext
還可以直接反射調用setNewMoney
success
)
成了
參考文章:
https://juejin.cn/post/6850037258754457614#heading-8
http://www.lxweimin.com/p/35246dfe4cb0