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
Frida HOOK微信实现骰子作弊的更多相关文章
- 史上最全面 Android逆向培训之__实战(hook微信)
我的CSDN博客:https://blog.csdn.net/gfg156196 by--qihao 书接上文,上回说到了xposed,接下来就用一下,体验一下商业项目的赶脚…… 上一篇:史上最全 ...
- frida(hook工具)的环境搭建
一.简介 frida 是一款基于 python+javascript 的 hook 框架,可运行在 android.ios.linux.win等各个平台,主要使用的动态二进制插桩技术. Frida官网 ...
- 关于如何使用xposed来hook微信软件
安卓端 难点有两个 收款码的生成和到帐监听 需要源码加 2442982910
- hook框架frida的安装以及简单实用案例
1.下载地址 https://github.co/frida/frida/releases 2.另外两种安装方法 1.Install from prebuilt binaries This is th ...
- 【转】编写微信聊天机器人4《聊天精灵WeChatGenius》:实时获取到微信聊天消息,hook数据库插入操作。
接上篇,使用Xposed来hook微信,找到微信进程:https://blog.csdn.net/weixin_42127613/article/details/81839537 既然已经找到了微信进 ...
- 基于frida框架Hook native中的函数(1)
作者:H01mes撰写的这篇关于frida框架hook native函数的文章很不错,值得推荐和学习,也感谢原作者. 0x01 前言 关于android的hook以前一直用的xposed来hook j ...
- Frida高级逆向-Hook Native(Java So)2
Frida Hook So 一些操作说明 Native方法第一个参数是 JNIEnv *env 如何在Frida中获取 JNIEnv 对象呢? Java.vm.getEnv(); 如何将string类 ...
- Frida高级逆向-Hook Native(Java So)
Frida Hook Native Frida Hook Java Jni demo: function hook_java() { Java.perform(function () { const ...
- Frida高级逆向-Hook Java
Frida Hook Java 层 Frida两种启动方式的区别 span 模式:frida 重新打开一个进程 frida -U -f 包名 -l js路径 --no-pause attch 模式: ...
随机推荐
- Android中的Libraries以及Order and Export的使用。
1Add JAR 从Eclipse的现有所有工程中,添加jar包到该工程下 2Add External JARs 从Eclipse外的其他的位置,添加jar包到该工程下 3Add Variable 增 ...
- [Android]Android端ORM框架——RapidORM(v2.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...
- Centos 安装配置gerrit
关闭selinux,不然nginx的反向代理会报错connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting ...
- Javascript中,document.getElementsByName获取的就一定是数组了么?
今天在一张JSP网页中,写一个javascript方法,用于全选. 全部被选checkBox位于一个名为mainForm的Form下,name=pushIds.方法如下: function selec ...
- 原创 C++作用域 (二)
2.3全局作用域 2.3.1概述 全局作用域是最大的名字空间作用域,不同于用户自定义的名字空间作用域,全局作用域不需要显示地定义,它天然存在于C++程序中.全局作用域是一个最外层的容器,是所有作用域的 ...
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
- XML简介与CDATA解释
简介XML 是一种受到广泛支持的 Internet 标准,用于以一种特殊的方式编码结构化数据.实际上,以 XML 编码的数据可以通过任何编程语言解码,人们甚至可以使用标准的文本编辑器来阅读或编写 XM ...
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1194 Solved: 455[Submit][Status][Discu ...
- jdbc java数据库连接 10)批处理
批处理 很多时候,需要批量执行sql语句! 需求:批量保存信息! 设计: AdminDao Public void save(List<Admin list){ // 目前用这种方式 ...
- EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
I.EF里的默认映射 上篇文章演示的通过定义实体类就可以自动生成数据库,并且EF自动设置了数据库的主键.外键以及表名和字段的类型等,这就是EF里的默认映射.具体分为: 数据库映射:Code First ...