Android挂逼修练之行--微信聊天消息修改器插件开发详解
一、插件开发背景
昨天无意中在刷抖音的时候看到有个视频可以修改转账信息,我就觉得好奇所以就自己实现了一下,关于微信消息修改其实是个假象就是修改本地自己看到的消息,而不是真正意义上的把聊天信息修改了,但是这个修改的好处在于好玩,比如你在和你喜欢的人聊天突然发错消息了,但是如果这时候撤回她也是可以看到的,那么怎么办呢?就本地修改一下消息,然后截图给她告诉她微信出bug了,消息不同步你看我这发的消息是这样的,当然还有转账的时候,可以搞怪一下,比如给媳妇转账了¥0.01块钱,但是本地修改成¥20191314块,然后截图给她告诉她真的转了这么多钱表明真心,告诉她是腾讯微信出bug了。所以这么玩的确好但是很容易变成单身狗!
二、逆向分析
关于修改本地自己的消息信息其实也不难,首先用UI分析工具直接找到控件名字:
然后去public.xml中找到值:
找到之后,按照之前说过的字符串搜索方式进行查找方式:find . |xargs grep -ri "查找内容"
找到正确的id名字之后继续find搜索:
找到这个类,然后用Jadx直接打开dex即可:
看到这个控件的定义了,然后直接搜索这个类的调用的地方,还是find搜索:
看到这里用到了控件的类,继续用Jadx打开dex即可:
这里进行获取值然后进行赋值操作,到这里我们可能没法往下跟踪了,这时候就需要打印堆栈信息进行跟踪了:
可以先去smali中找到定义类型,然后直接hook即可:
然后通过打印堆栈信息找到方法点:
通过堆栈信息继续查找这个类,还是find命令:
然后用Jadx打开这个类:
这个类中获取item数据,通过聊天消息列表中可以看到有很多种消息类型,比如纯文本,图片,转账,文章链接等,可能都在这里进行区分,这里看到item的类型是bi,依然用find命令查找:
不过这里直接hook了getItem无效,所以这时候去查看smali代码,看到是调用了LU方法:
这时候打印了消息id和消息内容:
通过这里保存一下当前对象其实就是列表适配器,为了后面修改完内容之后需要进行一次列表刷新操作:
找到这个类型之后用Jadx打开即可:
这个类继承了好几个类:
继续往上看:
看到这里有很多字段,这个就是微信聊天的消息统一处理字段类,这个在之前的文章都分析过,以后要分析微信的聊天信息都可以找到这个类即可:
看到打印的消息内容,发现微信的消息富文本用的是xml格式:
然后往下看getView中就是根据item类型构造不同的itemView内容:
看到这里有很多子类,不过不确定是哪个,这时候继续去找转账的itemView的字符串信息
然后去public.xml中查找id,继续去find搜索:
找到这个id之后继续find搜索:
继续找到这个类
找到之后用Jadx打开dex查看:
这里看到eMf字段就是那个转账金额值。
所以到这里我们已经可以找到item信息,并且通过hook方法获取到每个item的结构体信息,通过type类型判断是哪种item类型,当然这里我们可能只需要获取item的content内容,但是现在我们还需要获取每个item的点击事件,这个本来是通过getView的方法的返回View直接添加OnClick事件,但是操作无效,所以无奈就从根源开始找,这里通过点开转账itemView,然后跳转到一个新的页面信息,用 adb shell dumpsys activity top 命令获取到页面信息:
然后继续用find命令获取类信息:
用Jadx打开这个dex之后,查看这个页面的入口参数,然后全局搜索这个字段值:
然后继续用find命令进行查找字段值:
找到这里的一个方法就是开启页面的方法:
这里依然不太好跟踪代码了,就要用打印堆栈信息:
通过打印堆栈信息获取类:
然后在这个最终点击事件类中进行统一处理:
这里可以通过点击的View的getTag获取结构对象:
通过这里获取结构信息,先要获取消息的type类型进行分类处理,我们只需要对文本,文章,转账这三种类型进行操作,对于文本类型content就是文本内容直接获取展示输入框中即可:
当然还有文章和转账功能的需要特殊处理,我们通过打印消息xml格式:
这个转账信息,这里需要获取金额,就是在feeddesc中节点信息,还有这里需要获取到支付的msgid信息留作备用,还有就是文章xml信息:
文章中我们需要修改title和描述信息即可:
我们这里获取到文章的标题和描述然后填充到文本框中,最后在获取修改后的内容通过正则表达式进行替换,保存到HashMap中即可,这里需要用msgId作为key,保存之后刷新一下列表,然后在列表中通过获取HashMap中的信息进行更新即可:
在这两个列表获取消息结构信息的地方统一处理即可,通过msgId去HashMap中寻找是否有更改的内容,有的话直接替换即可。
但是对于转账消息类型比较麻烦,通过测试发现直接处理content替换是无效的,所以这里需要从根源进行替换获取即可,不过这里还是需要获取金额和支付msgid保存后续使用:
在之前分析了转账控件id的过程中发现最后把金额值设置到控件文本中的方法就是这里,继续find搜索这个类:
然后在这里统一进行替换即可,最终是通过eMf字段值进行展示金额值的,那么这里通过比对支付msgid是否一致然后进行金额拦截替换展示即可:
每次看抖音会发现一些黑科技,就会控制不住自己去研究,但是每次研究微信插件都是一种折磨,因为这个搜索分析过程比生孩子还痛苦,每分析一次发量就减少一点,每次截图都是在40+以上,因为我不想把这个过程草草了事,既然要写就要写详细,让每个人都能学到新知识,到这里我们就成功了完成了消息修改工具,插件源码就不进行公布了,感兴趣的同学可以去编码美丽小密圈一起讨论:
消息文本修改功能
文章标题和描述修改功能
转账消息金额修改功能
严重说明
本文的目的只有一个就是学习逆向分析技巧,如果有人利用本文技术进行非法操作带来的后果都是操作者自己承担,和本文以及本文作者没有任何关系,本文涉及到的代码项目可以去编码美丽小密圈自取,长按下方二维码加入小密圈一起学习探讨技术
三、总结
到这里我们就开发完了这个工具,可以看到本文主要用到的就是find命令搜索大发和打印堆栈信息进行代码跟踪逻辑,这两个方式是现在以及以后分析微信的最重要方式,因为微信多dex直接打开Jadx直接死了,如果导入到AS中,其实也有点卡顿,但是这种有目的的查找然后定位到指定dex然后用Jadx打开即可,效率高方便快捷。
手机查看文章不方便,可以网页看
http://www.520monkey.com
《Android应用安全防护和逆向分析》
点击查看图书详情
长按下面????????二维码,关注编码美丽
长按下面????????二维码,加我好友吧!
猛戳下方"阅读原文",开启安全逆向大门!
Android挂逼修练之行--微信聊天消息修改器插件开发详解相关推荐
- android xml msgid,Android挂逼修练之行–微信聊天消息修改器插件开发详解
一.插件开发背景 昨天无意中在刷抖音的时候看到有个视频可以修改转账信息,我就觉得好奇所以就自己实现了一下,关于微信消息修改其实是个假象就是修改本地自己看到的消息,而不是真正意义上的把聊天信息修改了,但 ...
- Android挂逼修练之行--微信小程序逆向辅助插件工具开发详解
一.前言 之前一篇文章已经详细介绍了:微信小程序包的格式解析,在之前文章中也了解到小程序包存放在沙盒目录,但是微信为了让小程序包安全就对文件名做了一个处理,导致我们很难找到对应的小程序对应的包文件,所 ...
- Android挂逼修练之行--微信设置朋友圈封面视频插件开发详解
一.背景介绍 最近在刷抖音的时候看见别人发了一个可以把微信朋友圈封面图设置成视频的功能,比较好奇就自己研究了一下,最开始的时候第一灵感就是是不是微信设置封面图的接口有后门,就是微信为了后续功能扩展,服 ...
- Android挂逼修练之行---微信中把朋友圈封面设置成酷炫视频功能插件开发详解
一.背景介绍 最近在刷抖音的时候看见别人发了一个可以把微信朋友圈封面图设置成视频的功能,比较好奇就自己研究了一下,最开始的时候第一灵感就是是不是微信设置封面图的接口有后门,就是微信为了后续功能扩展,服 ...
- android 微信 去广告插件,Android"挂逼"修练之行--微信小程序逆向辅助插件工具开发详解 ......
一.前言 之前一篇文章已经详细介绍了 微信小程序包的格式 ,在之前文章中也了解到小程序包存放在沙盒目录,但是微信为了让小程序包安全就对文件名做了一个处理,导致我们很难找到对应的小程序对应的包文件,所以 ...
- android 调出键盘表情_Android高仿微信表情输入与键盘输入详解
使用到表情与键盘的切换输入,需要多表情的只需要实现自己的表情fragment界面,然后根据工厂类获取即可,上图看效果: 效果还不错吧,哈哈.下面开始介绍: 本篇主要分析的核心类EmotionKeybo ...
- Android Studio 插件开发详解一:入门练手
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
- android高仿微信聊天消息列表自由复制文字,双击查看文本内容
SelectTextHelper-高仿微信聊天消息列表自由复制文字,双击查看文本内容 掘金地址 github地址 SelectTextHelper打造一个全网最逼近微信聊天消息自由复制,双击查看文本内 ...
- android qq功能实现原理,Android QQ、微信聊天消息界面设计原理与实现
Android QQ.微信聊天消息界面设计原理与实现 原理:Android平台上,典型的以腾讯的QQ.微信这些聊天消息界面通常可以采用ListView设计与实现,需要使用ListView 适配器 ...
- Android Studio 插件开发详解四:填坑
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
最新文章
- linux下apache+php+mysql升级安装过程
- 皮尔逊相关系数的计算(python代码版)
- OC字符串转C语言字符串
- python36+centos7离线安装tensorflow与talib的方法
- 使用Topshelf管理Windows服务
- leetcode - 39. 组合总和
- 傅里叶变换滤波之生物信号滤波(笔记03)
- python入门笔记第一天
- Android超级好看的动态登陆界面(附有详细代码)
- 深度竞品分析:阿里旗下闲鱼与58旗下转转
- 通达信标记符号_通达信49个图标,高手指教,通达信软件里的股票标记符号,能增加吗...
- scara机器人dh参数表_SCARA机器人驱动方式及参数初定
- 行业大数据技术发展趋势
- pvr图片格式如何打开
- 2018年度总结(人若无名,专心练剑)
- 安卓动画系统 - 安卓R
- echarts pie legend设置 (自定义文本)
- python编程方块_趣味Python编程之经典俄罗斯方块
- 卷积层运算详解与im2col实现
- PyQt5 QThread
热门文章
- Android源码层修改默认时区
- 武音硕士研究生《计算机音乐作曲》培训,武汉音乐学院2013年硕士研究生招生计算机音乐作曲科目考试大纲及参考书目...
- 爬虫之-bilibili视频下载-接口分析
- 只说了一句话,产品经理乖乖由我调整项目排期《打工人的那些事》
- 《假如爱有天意》月光如春风拂面,你如种子深埋我心
- 【历史上的今天】6 月 17 日:术语“超文本”的创造者出生;Novell 首席科学家诞生;探索频道开播
- 相关系数|皮尔逊和斯皮尔曼
- 九枝兰专访-----深入解读程序化购买以及行业现状(初篇)
- 拼多多商家推广常见问题解答!
- 高电平和低电平 到底是啥?