微信app hook修改剪刀石头布以及骰子思路

news2024/12/24 3:44:57

0x01 前言

该方法很简单,本次记录是为了加深对安卓hook技术的学习,以及进一步熟悉frida和objection的使用,如果只是想需要这个功能,推荐手机root后装微x模块

技术仅供分享,请勿用于非法用途

0x02 环境准备

首先需要准备一台已经root的安卓手机(虚拟机也可),配备需求如下:

  1. 微信(最新版即可,本次使用的版本为v8.0.32)
  2. frida
  3. adb

其次需要电脑安装frida环境,之后再安装objection,具体如何配置可以在网上查找教程

0x03 hook过程

首先打开cmd在手机端启动frida:

adb shell su -c /data/local/tmp/frida

执行如下指令,第二条指令执行完后会返回如下图所示:

objection -g com.tencent.mm explore
android hooking search classes random

image-20230128110132669

上图中看到了java.util.Random,紧接着我们hook该class,看一下发送随机表情后,会不会触发该类中的函数,执行如下指令进行hook:

android hooking watch class java.util.Random

接下来我们在手机端微信中进入文件传输助手,点击石头剪刀布或骰子,可以看到cmd中已被触发(如果没被触发,检查一下frida是否掉线了,或者可以objection重新挂载一下,还是不行的话请检查微信版本):

image-20230128110958795

上图中不难看出java.util.Random.nextInt和java.util.Random.next两个方法被触发了,学过逆向的应该都明白这个并不微信本身的函数,而是系统层函数,直接改这个函数的值可能会导致程序崩溃等等。既然如此,我们先了解一下这俩函数的意思:

nextInt方法调用返回一个伪随机、均匀分布的 int 值,介于 0(包括)和 n(不包括)之间。

next()方法用于返回以位为单位的伪随机数。

不难知晓nextInt方法中传递的参数可能为随机值的范围,因此我们hook该函数的堆栈,在此之前,我们先删除之前java.util.Random的hook点:

jobs list
jobs kill 222843

image-20230128111630269

紧接着我们执行如下指令对java.util.Random.nextInt方法进行hook:

android hooking watch class_method java.util.Random.nextInt --dump-args --dump-backtrace --dump-return

然后发送一个石头剪刀布的表情,可以看到cmd中触发的信息如下:

image-20230128111838598

按照堆栈顺序,不难看出com.tencent.mm.sdk.platformtools.Util.getIntRandom方法为上层方法,根据函数名,可以推出该方法即为发送剪刀石头布的随机值传递方法,下方可以看到传递的参数为3,返回值为1,手机上发出的表情为石头,可以推测返回值1代表石头,再次发送返回值为none,手机上发出的表情为剪刀,可以推测返回值none代表剪刀,再次发送返回值为2,手机上发出的表情为布,可以推测返回值1代表布。

同样的方法我们可以得出从none到5为骰子点数从1到6,得到这样的结果后,我们应该考虑的是如何判断我们是点击了骰子的表情呢还是剪刀石头布,我们再往com.tencent.mm.sdk.platformtools.Util.getIntRandom方法的上层查看,下hook断点:

android hooking watch class_method com.tencent.mm.sdk.platformtools.Util.getIntRandom

发现提示找不到类,这里调试很久也没找到解决办法,但是光用frida可以hook到该方法(有时候能hook到,有时候又hook不到),这里就很奇怪,有大佬能明白的欢迎私信共同讨论。

如果此处走通,那么接下来便很容易了,写个frida脚本即可

最后,公众号试运营,欢迎关注公众号:恒运安全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux下更新tomcat版本

进入tomcat目录下查看当前版本号./version.sh2.切忌升级之前一定要备份老版本mkdir tomcat-backup3.拷贝老版本到你创建的文件夹中cp -rf apache-tomcat-9.0.45-stunew/ tomcat-backup/4.下载tomcat安装包,随便你下载什么版本,我这里以68为例官网&#x…

ssm二手废旧塑料回收交易系统的设计与实现

内容是设计并且实现一个废旧塑料交易系统的设计与实现。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。废旧塑料交易系统的设计与实现的功能已基本实现,主要包括用户、回收站、加工厂、预约信息、收购信息、交…

ARP协议与ARP地址欺骗防护

ARP协议 什么是MAC地址 MAC地址是固化在网卡上的网络标识,由Ieee802标准规定。 什么是广播 向同一个网段内的设备,发送数据包,广播IP地址是同网段最后一个IP地址。 认识ARP协议 ARP的全称是地址解析协议,我们通过ARP协议获取…

Webpack 运行时代码分析 - 动态加载

文章内容:用 webpack 打包含有动态加载的模块,分析打包后的代码,也就是 webpack 运行时代码。 先思考如下一些问题: 1.什么叫做动态加载 2.如果不使用 webpack 打包,能做到动态加载吗 3.webpack 是如何实现动态加载的…

安装mysql的保姆级教程

安装mysql的保姆级教程: 1.准备的条件 已下载mysql应用软件 my.ini文件(见2) 2.设置my.ini文件 (1)my.ini文件内容: [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 ----------是你的文件路径…

TCP/IP网络编程——基于 UDP 的服务端/客户端

完整版文章请参考: TCP/IP网络编程完整版文章 文章目录第 6 章 基于 UDP 的服务端/客户端6.1 理解 UDP6.1.1 UDP 套接字的特点6.1.2 UDP 的工作原理6.1.3 UDP 的高效使用6.2 实现基于 UDP 的服务端/客户端6.2.1 UDP 中的服务端和客户端没有连接6.2.2 UDP 服务器和客…

业务流程软件的优点和对企业的好处

我们都知道,CRM客户管理软件可以为企业识别意向客户,带来更多业绩。那么在处理业务的过程中,一套自带业务流程管理的CRM软件是否重要?下面我们来说说企业使用业务流程管理软件的好处,您就清楚问题的答案了。 1、减少错…

【项目精选】基于 Spring Boot + Mybatis Plus + MySQL 的社区居民联系方式管理系统

项目简介 此系统使用 Spring Boot Mybatis Plus Spring Security React Ant Design Pro 架构编写。数据库采用 MySQL,提供强大的、安全的和完整的管理社区居民的信息的功能。 安全性 此系统在系统层面提供了众多的安全特性,产品安全无忧。这些特性…

【高并发】- 生产级系统搭建 - 2

前言 本章讲解高并发系统中常见概念及相关设计的方案,目的是让小伙伴都了解高并发系统中,每个环节所涉及到的相关概念。帮助大家更好地理解和掌握高并发系统中的场景及设计思想。 1. 常见高并发系统架构图(这里以秒杀系统为例) 上…

国电投-光伏电站人工智能运维大数据处理分析比赛(记录)

前言 1-1 简介 DataFountain平台举办的比赛,赛题:光伏电站人工智能运维大数据处理分析。以下是比赛链接:光伏电站人工智能运维大数据处理分析 Competitions - DataFountain 1-2 任务背景 在分析光伏发电原理的基础上,论证了辐照…

虹科分享 | 2022年传感器事业部文章精选

2022年 文章精选 精选案例文章 虹科案例 | HK-Micronor光纤传感器应用领域介绍(上) 虹科案例 | HK-Micronor光纤传感器应用领域介绍(下) 虹科案例 | 如何更加准确的表征罐箱内燃油的质量规格? 虹科案例 | 监测各种…

java Vue+Springboot读书学习笔记共享平台

读书笔记共享平台的设计基于现有的网络平台,可以实现用户管理及数据信息管理,方便管理员对后台进行管理有详细的了解及统计分析,随时查看信息状态。 系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现读书…

CnOpenData中国保险机构网点全集数据

一、数据简介 改革开放以来,中国保险行业飞速增长,在补偿灾害损失、维护社会安定、支持中国的经济建设等方面发挥了重要作用。整个行业的突飞猛进体现在三个方面: 一是保险机构数量增长迅速。中国保险公司的数量从1980年的1家迅速增加至200多…

【云原生】Prometheus之图形化界面grafana与服务发现部署

内容预知 前言 1. 部署 Grafana 1.1 grafana的下载与安装 (1)安装grafana (2)配置数据源 (3)导入 grafana 监控面板 (4)删除模板操作 4.2 grafana的中文插件安装 2. 部署 Prometheus 服务发现 2.1…

C语言中二维数组的基本使用 定义 赋值读写指定元素的值 作为函数参数传递的注意点

文章目录问题依次解决C语言中二维数组如何定义、如何一次性赋值?如何使用 sizeof() 计算二维数组的行数、列数?【与定义数组的地方,在同一作用域内可用】如何读写指定位置的元素?【不同作用域,有两种方式】不同作用域内…

Git(见资源)

Git的概念【1】Git技术:公司必备,一定要会 【2】Git概念: Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。【3】什么是版本控制? 版本控制是一种记录一个或若干文件内容变化&#…

BGP基础实验(华为)

题目: 思路: 该题分为三个AS区域,并且三个区别间分别使用不同的路由,EBGP,IBGP,OSFP连接等,其中AS1与AS2之间使用的是EBGP连接,这点需要EBGP的命令来进行实现,AS2中使用的OSPF,AS2&a…

不规范使用ThreadLocal导致的bug,说多了都是泪

ThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性能。但是,如果错误的使用Threadlocal,可能会引起不可预期的bug,以及造成内存泄露。 因为线程重用导致的信息错乱的bug 有时我们…

一起自学SLAM算法:11.2 环境感知

连载文章,长期更新,欢迎关注: 环境感知就是机器人利用传感器获取自身及环境状态信息的过程,自主导航机器人的环境感知主要包括实时定位、环境建模、语义理解等,下面具体讨论。 11.2.1 实时定位 定位其实就是在回答图…

BI技巧丨近两年及当年月份数据汇总

BOSS:白茶,有个需求,不知道你能不能做? 白茶:不能! BOSS:我还没说呢,小伙砸!做了加钱! 白茶:BOSS您吩咐! BOSS:是这样的&a…