Xposed折腾笔记(二)-微信骰子我做主

翻阅了一些资料,也来折腾下微信骰子


0x01 定位随机函数

这里也只是猜测,看到大佬的文章说可能用到Radnom函数,因此本次的思路便是Hook所有的Random函数,然后发送骰子,查看调用堆栈信息,找到定位函数。

public class XposedInit implements IXposedHookLoadPackage {
String TAG = "hooktest";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
    if(lpparam.packageName.equals("com.tencent.mm")){
        // hook random构造函数 Random(long s)
        XposedHelpers.findAndHookConstructor("java.util.Random", lpparam.classLoader, long.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                Log.e(TAG,"Random(long)");
                Log.e(TAG, Log.getStackTraceString(new Throwable()));
                super.afterHookedMethod(param);
            }
        });
        // hook Random()
        XposedHelpers.findAndHookConstructor("java.util.Random", lpparam.classLoader, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                Log.e(TAG,"Random()");
                Log.e(TAG, Log.getStackTraceString(new Throwable()));
                super.afterHookedMethod(param);
            }
        });

    }

}}

然后调用到发送骰子界面,发送一个骰子,观察logcat日志变化如下图。
堆栈截图.png

定位到函数为com.tencent.mm.sdk.platformtools.bp.gv。

0x02 Hook定位函数

通过上面找到触发随机数产生的位置,下面就开始看该函数与骰子结果之间的关系。

public class XposedInit implements IXposedHookLoadPackage {
String TAG = "hooktest";
@Override
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
    if(lpparam.packageName.equals("com.tencent.mm")){
        XposedHelpers.findAndHookMethod("com.tencent.mm.sdk.platformtools.bp", lpparam.classLoader, "gv", int.class,int.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {

                Log.e(TAG, "args: "+param.args[0]+" Result ----" + param.getResult());
                super.afterHookedMethod(param);
            }
        });
    }
}

}
结果如下,发下随机数字与骰子结果刚好一一对应。
2.png
后面直接修改返回结果即可。

                 // 2表示剪刀石头布,5表示骰子
                if((int)param.args[0] == 2){
                    param.setResult(1);
                }else if((int)param.args[0] == 5){
                    param.setResult(5);// 总返回6点
                }

看看效果怎样。

3.png

下篇文章为Xposed 腾讯视频去广告。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xposed-v7.1-sdk25-x86.zip是一个针对Android系统的软件框架文件。Xposed框架是一个开源项目,可以在不修改系统APK文件的情况下改变系统和应用程序的行为。xposed-v7.1-sdk25-x86.zip中的v7.1表示框架的版本号,sdk25表示该框架适用于Android 7.1版本的开发工具包,而x86表示该框架适用于基于x86架构的处理器。 使用xposed-v7.1-sdk25-x86.zip,我们可以在Android系统中实现各种定制化和优化的功能。通过安装该框架,我们可以在不修改应用程序源代码的情况下,通过加载和运行特定模块来修改应用程序的行为。这些模块可以实现例如更改应用程序界面、增加额外的功能、去除广告等等。同时,xposed-v7.1-sdk25-x86.zip提供了一个非常方便的开发环境,使开发者能够轻松创建和调试自己的模块。 要安装xposed-v7.1-sdk25-x86.zip,首先需要确保你的设备已经root权限。然后,将该框架文件通过适当的方法(如刷机)安装到设备的系统分区中。安装完成后,重启设备并安装Xposed Installer应用程序,该应用程序将允许你管理和加载模块。 总结来说,xposed-v7.1-sdk25-x86.zip是一个强大的Android系统软件框架,可以通过加载模块来修改和定制应用程序和系统的行为,提供了方便的开发环境供开发者创造自己的模块。但要注意,在使用之前确保你的设备已经root,并且安装过程需要相应的技术和操作技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值