此篇博客仅实现的思路分享,不提供最终成品

目录

  • 学完你能收获什么
  • 要求
    • 前置条件
    • 运行环境
  • 成果
    • 最终效果
    • 开发耗时
    • 最终Hook的类
  • 实现
    • 需知
      • 1.选择root或VA
      • 2.反编译代码工具
      • 3.YAHFA使用简介
    • Hook
      • 1.计步器
      • 2.反撤回
      • 3.万能骰子
      • 4.抢红包
      • 5.自动回复

学完你能收获什么

1.增长安全意识,你会发现root后只要软件想获取什么就获取什么;
(运行在VA里的任何软件其实都等价于root风险)

2.学会自定义完善App的途径。
(打个比方,如果你觉得微信定位不准,就可以在微信获取定位的地方换成或用别的定位api优化)

Hook这项技术在2上面的应用场景真的非常的广,可以在不同的应用之前搭建起一个桥梁。
另外,友情提示,千万不要root或者root后下不明来源软件,VA自用玩玩就行。

要求

前置条件

1.手机Root并且会使用Xposed等Hook框架或使用VA;
2.有一定安卓代码编写能力与安卓逆向能力;
3.Java基础扎实,因为VA、Android及我使用的Hook代码都是基于Java的;
4.有耐心。

运行环境

Android:9
手机型号:华为荣耀Magic2 /或其他

成果

最终效果

因为能拦截消息发送,所以没做图形化的工具而是直接采用了了个命令控制,这里就显示一下效果参考。

1.万能骰子/石头剪刀布
2.计步器任意倍率
3.反撤回
4.自动回复->聊天机器人
5.前后台锁屏任意抢红包
6.模拟别人给自己发消息

学习阔以,请勿滥用技术。


开发耗时

因为网上资料还是比较多的,从零开始到做完上面那些功能大概花了一星期,知识分享思路,代码不考虑开源

最终Hook的类

因为安卓的代码混淆会根据实际代码所处的位置分配不同的字母,微信版本更新如果类的代码顺序变了就会导致Hook的类名变化,所以Hook微信会有适配版本号。

实现

需知

1.选择root或VA

root非常不安全,我是使用了VirtualApp+YAHFA(参考了VirtualHook)实现的。
如果要使用VA并且是Android9的手机,你需要耗费一定的时间去让git上的开源代码适配你的Android9。

2.反编译代码工具

apkKill、dex2jar 等软件我都试过,或多或少都有问题

使用apktool+jadx+安卓sdk自带monitor即可应对大部分场景

3.YAHFA使用简介

插件的基本模板如下,以Hook步数为例
注意点
1.methodSig是javap转化的汇编语言
基本数据类型如int对应I、Float对应F、boolean对应Z、Long对应J
实体类则使用java/lang/Sting;(注意这里有分号)
数组则在前面加一个’['如[java/lang/Sting;、[I
可使用如javap -s java.lang.Sting进行查看

public static String methodSig = “(I[FIJ)V”;
代表该方法为(int,float[],int,long)的输入参数,V即返回void

2.backup()是YAHFA的原方法备份,里面无论写什么都不会被执行到,仅代表原方法。

3.hook()相当于AOP的环绕代理,其中backup()相当于原方法执行。

4.hook()方法的第一个参数如果该类为非静态类则为自身,静态类则不填,可以使用Object,全局保存该对象后通过反射调用该类的其他方法(这个做法在hook中会非常频繁,hook有时候只是为了获取到某个类的对象再通过反射调用该类的其他方法)

public class Hook_SystemSensorManager_dispatchSensorEvent {private static final String TAG = HookInfo.TAG + "_Sensor";public static String className = "android.hardware.SystemSensorManager$SensorEventQueue";public static String methodName = "dispatchSensorEvent";public static String methodSig = "(I[FIJ)V";public static int step = 1;public static void hook(Object object, int handle, float[] values, int inAccuracy,long timestamp) {values[0] = values[0] + step * WalkCommand.walkMultiple;step++;backup(object, handle, values, inAccuracy, timestamp);}private static void backup(Object object, int handle, float[] values, int inAccuracy, long timestamp) {}
}

Hook

代码只是一个大概,具体的需要用Jadx反编译出源码,再通过monitor自行分析
可以Hook几个类辅助进行观察(ClassLoader、Activity、各种Log)

1.计步器

计步器比较通用没什么好说的,调用SensorEventQueue.dispatchSensorEvent方法前修改其倍数即可,上面举的例子就是计步器的。

需要Hook的方法:
SensorEventQueue.dispatchSensorEvent

2.反撤回

1.撤回的时候会受到一条通知:XXX撤回了一条消息,该通知会带有撤回的消息内容体。
2.Hook该方法获取到被撤回的消息体重新插入本地消息数据库。
3.撤回文件/视频的同时会删除本地资源文件,所以要Hook对应的删除方法,禁止资源文件删除。

需要Hook的方法:
SQLiteDatabase.insertWithOnConflict()
SQLiteDatabase.delete()
File.delete()

细思极恐的是
你发的所有消息,只要某个软件想要,就可以直接获取。
比如微信聊天,发图片发视频,全都是可以拦截到的,然后本地储存,在某个时间点悄悄的发给后台服务。
甚至可以在支付的时候修改一下收款人?(虽说实际操作会有非常多的校验难度很大,不排除有这种可能)

3.万能骰子

骰子是随机数,所以定位的思路也很简单。
1.打开monitor记录下一次骰子的过程
2.搜索方法为random()的函数
3.在jadx中找到该类hook其返回值即为任意点数

网上的分析文章其实都有提到了这句,所以定位下面这句代码即可找到对应类
new Random(System.currentTimeMillis()).nextInt((i - i2) + 1) + i2

需要Hook的方法自行定位。

4.抢红包

流程分析
1.抢红包会在本地数据库插入一条红包消息,这里Hook并获取解析出红包的nativeurl,因为红包页其实是webview。
2.通过monitor分析得到加载webview的函数方法,Hook得到该加载的对象,并记录加载红包页所需的参数。
3.Hook初始Activity用于webview加载所需参数。
4.后台/锁屏抢红包可借助moveTaskToBack(true);函数实现。

5.自动回复

自动回复挺bug的,因为可以模拟出别人给自己发消息的假象,不作分析
给个提示,消息体内field_talker、field_isSend、field_content的属性比较关键
和谁聊天,谁是发送人,发送了什么

安卓Hook微信-计步器、万能骰子、自动回复、反撤回、抢红包思路分享相关推荐

  1. 用hook android 微信,【第一篇】【安卓微信】HOOK微信发消息,当HOOK遇上HOOK。

    前人栽树,后人吃桃. 准备入坑 安卓 xposed hook 微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子.计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信).微信 a ...

  2. Java可以hook微信吗,【第一篇】【安卓微信】HOOK微信发消息,当HOOK遇上HOOK。

    前人栽树,后人吃桃. 准备入坑 安卓 xposed hook 微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子.计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信).微信 a ...

  3. android微信二维码收款hook,【第一篇】【安卓微信】HOOK微信发消息,当HOOK遇上HOOK。...

    前人栽树,后人吃桃. 准备入坑 安卓 xposed hook 微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子.计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信).微信 a ...

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

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

  5. android 艾特功能实现,IOS开发入门之iOS反编译实例之hook微信艾特所有人功能实现...

    本文将带你了解IOS开发入门iOS反编译实例之hook微信艾特所有人功能实现,希望本文对大家学IOS有所帮助. 研究了一段时间反编译逆向工程,只是略微了解了一些皮毛,最近忙的事情太杂,就简单写一下吧. ...

  6. iOS反编译-hook微信之艾特所有人

    研究了一段时间反编译逆向工程,只是略微了解了一些皮毛,最近忙的事情太杂,就简单写一下吧. 在文章开始之前,首先感谢"蒸米"大神,在乌云上的一些文章引领我进入反编译的,其次也感谢&q ...

  7. python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP

    使用Xposed Hook微信等APP CPWechatXposed 是笔者折腾Xposed插件的一些记录,Xposed通过Hook应用相关的方法来为应用添加一些附加的 功能.本项目仅用于技术研究学习 ...

  8. 微信小程序源码反编译

    @IT猴~ 写有用的文章 微信小程序源码反编译 亲测有效,能返编译市面上百分之90的小程序.准备: 1.夜神模拟器 2.node.js 3.微信 夜神模拟器 夜神模拟器官网: https://www. ...

  9. 安卓Hook折腾研究的笔记记录

    目录 安卓Hook的作用 安卓Hook需要准备的运行环境 模块运行环境最重要的,绕不开的两个必要条件: 关于运行环境准备的困境与解决方案: Xposed.Magisk.Edxposed.[模块或插件] ...

最新文章

  1. 综合性深入的技术文章-20161103
  2. Python自然语言处理实战
  3. 点击拖动放大该图片大小
  4. sketch如何做设计稿交互_做交互设计不可不知的十大原则
  5. zen3架构_Zen3架构移动版CPU基准测试成绩泄露,IPC性能大增
  6. 操作系统(三十一)死锁的检测和解除
  7. 二十三、Python队列实现多线程(下篇)
  8. 《双人成行》如何炼就“教科书级别的合作体验游戏”典范?
  9. 2007年10月小记
  10. P4036-[JSOI2008]火星人【Splay,二分,hash】
  11. 阿里云Kubernetes容器服务上体验Knative
  12. 汇付天下支付使用 NPC_SERVER
  13. Python reversed()函数
  14. efi分区能不能删除 win10_电脑分区被删除如何恢复_win10系统中EFI分区被删除的处理方法...
  15. 6.4两种给定两个均不超过9的正整数k和n,要求编写程序求k+kk+kkk++…+kk…k (n个k,不是n个k乘积)之和
  16. SVG中中文字体的显示
  17. 打补丁patch 命令使用
  18. 测试网速_使用Speedtest CLI测试你的网速
  19. vue-cli4引入Element Plus 插件
  20. 一次简单的爬虫过程记录:静态网页小说下载

热门文章

  1. 100层楼,2个鸡蛋,找出那一层鸡蛋破
  2. Naive script setup写法上传注意
  3. 安装谷歌浏览器 安装chrome 下载chrome chrome 下载
  4. 联想台式机linux系统安装教程,商用台式一键恢复软件各版本使用介绍(适用于现有上市机型)...
  5. CNN系列学习之VGG16
  6. 汽车常见几种变速箱解析
  7. 如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响
  8. 马云厌恶美国 阿里巴巴转道香港上市
  9. ubuntu解决“系统的网络服务与此版本的网络管理器不兼容“问题
  10. 一、win10环境下,appium和python3的安装和配置