Frida HOOK微信实现骰子作弊

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-server2)adb forward tcp:27042 tcp:270423)执行脚本。

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

相关数据

哺乳期吃药后多久可以喂宝宝
365bet手机网址

哺乳期吃药后多久可以喂宝宝

📅 10-29 👁️ 5817
FIFA推出世界杯纪念邮票,全球同步发行
365bet手机网址

FIFA推出世界杯纪念邮票,全球同步发行

📅 10-12 👁️ 7382
白沙烟2025价目表 全部白沙烟价格一览表
365bet手机网址

白沙烟2025价目表 全部白沙烟价格一览表

📅 08-08 👁️ 373