zoukankan      html  css  js  c++  java
  • Frida HOOK微信实现骰子作弊

    由于微信摇骰子的功能在本地进行随机后在发送,所以存在可以hook掉判断骰子数的方法进行修改作弊。

    1.frida实现hook java层函数
    1)写个用来测试的demo,当我们点击按钮的时候会弹出窗口显示数字。代码中我是传进的参数是4,显示为8。

    package com.example.fridatest;
    
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.Toast;
    import android.os.Build;
    
    public class MainActivity extends Activity {
    
        Button myButton1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment_main);
    
            myButton1 = (Button) findViewById(R.id.button1);
            myButton1.setOnClickListener( new ButtonClick());
        }
    
        class ButtonClick implements OnClickListener {
            public void onClick(View v) {
                switch (v.getId()) {
                case R.id.button1:
                    int nRet = test(4);
                    String strRet = nRet + "";
                    Toast.makeText(MainActivity.this, strRet,Toast.LENGTH_LONG).show();
                    break;
                default:
                    break;
                }
            }
    
        }
        public int test(int num)
        {
            int nRet = num*2;
            return nRet;
        }
    }

    2)运行结果。

    2.连接手机,运行脚本。
    1)启动frida-server
    2)adb forward tcp:27042 tcp:27042
    3)执行脚本。

    import frida
    import sys
    
    
    scr = """
    Java.perform(function () {
    var be= Java.use("com.example.fridatest.MainActivity");
    send(typeof(be));
    send(typeof(be.test));
    send("start")
    be.test.implementation = function(){
        var type = arguments[0];
        send("start")
        send("type="+type);
        if (type == 4)
        {
            return this.test(5);
        }
        else
        {
            return 5;
        }
    
    };
    send("end")
    });
    """
    
    rdev = frida.get_usb_device(20)
    session = rdev.attach("com.example.fridatest")
    script = session.create_script(scr)
    
    fp = open("D:/log.txt","w") 
    
    
    def on_message(message, data):
        type = message["type"]
        msg = message
        if type == "send":
            msg = message["payload"]
        elif type == 'error':
            msg = message['stack']    
        print(msg)        
    
        
    script.on('message', on_message)
    script.load()
    sys.stdin.read()

    4)再次点击,可以看到hook成功,能获取到传入的参数以及修改后界面显示成我们hook修改过后的数值。

    3.修改微信骰子的判断函数。

    参考网上的文章定位最新版的判断函数为com.tencent.mm.sdk.platformtools.be类的tx函数。(Randon函数)

    1)编写hook代码修改实现作弊每次骰子都是6。

    主要函数

    scr = """
    Java.perform(function () {
    var be= Java.use("com.tencent.mm.sdk.platformtools.be");
    send(typeof(be));
    send(typeof(be.tx));
    send("start")
    be.tx.implementation = function(){
        var type = arguments[0];
        send("start")
        send("type="+type);
        return 5;
    };
    send("end")
    });
    """

    2)实现每次都能获取到6的结果。

    ps:试过了的手机,发现4.x版本的root的最为稳定。(红米note,华为3c),坑爹三星系列的都不成功。

    参考:http://www.voidcn.com/blog/autohacker/article/p-4979253.html
          :https://github.com/JAYAndroid/WeChatHook

  • 相关阅读:
    Vue Supermall蘑菇街API后端接口
    Vue UI库:ElementUI使用教程
    Python操作数据库,读取数据并按照json格式写入json文件
    css 轮播图
    ArcGIS Server密码重置
    JavaScript之箭头函数
    arcgis属性对比
    JavaScript之Promise
    很遥远
    请不要等到四十年后才明白
  • 原文地址:https://www.cnblogs.com/konf/p/5998785.html
Copyright © 2011-2022 走看看