抱歉,Xposed真的可以为所欲为——6.你的表白撤不回了(下)

简介: 一步步Hook微信,实现微信消息防撤回。

3.胡乱分析第三波


在我以为一切大功告成,膨胀得沾沾自喜的时候,测试小哥发现了意外的发现了一个Bug, 发语音,图片,视频,虽然没撤回,但是打开失败,估计就是文件被删除了。


而Android里删除文件调用的是File类的delete方法,跟一波方法,直接搜File.delete看下是否真的有调用:



好吧,直接Hook掉File类的delete方法,看看微信删除对应类型文件的路径,观察一波这些路径的规律,然后如果delete方法被调用了,过滤一波,不删除文件,直接返回结果true,欺骗微信文件删除成功,以此瞒天过海~ 代码如下:



依次发送语音,图片,视频,然后撤回,对应的删除记录:



观察下路径规则,不难发现对应的文件夹是 voice2,image2,video,so过滤一波路

径,如果路径包含这三个 直接过滤设置返回值为True,另外公众号,外链,都是属于文本信息,只是微信做了特别的解析,比如上面那个 百度贴吧的,所以和普通信息一样处理就好。



然后发现只有语音能够正常打开,图片和视频都无法正常打开,跟了下路径,



用ES浏览器来到这个路径下:



这就很奇怪了,明明图片存在,但是就是不能正确加载,而且每次点开都会执行一次删除的操作, 就是说数据库里还保存着这个记录,撤销信息无非 删数据库记录+删文件,删文件肯定是没问题的, 那么问题肯定就出在删数据库记录那里了。跟踪一下SQLiteDatabase里的delete()方法,把参数和返回值打印下:



依次做:发送语音,发送图片,发送视频然后撤回的日志跟踪。





结合delete方法一起看:



结合上面的日志和delete方法的代码,可以得这样的结论:


  • 1.音频相关放在voiceinfo表里,图片相关放在ImgInfo2表里,而视频相关则放在videoinfo2表里。


  • 2.还有个WxFileIndex2表,从删除语句可以知道就是根据msgId去删除对应的文件记录,但是返回值却有1,6,2,0?


跟下返回值的代码:executeUpdateDelete()方法,在SQLiteStatement类



改变的行的数目?一般来说删除一条数据,正确执行完,受影响的行数会是1。 而只有语音能正常播放,难道是这个原因?hook下这个方法,如果第一个参数是这四个表, 直接把返回值设置成1试试~



发下信息然后撤回下试试~



行吧,视频和图片都能打开了,到此总算完美解决的,真的是一波三折。 接着改下UI页面,补上上次下厨房Hook Xposed检测的开光和防撤回开关。 最后的界面如下:




相关文章
|
3月前
|
PHP 数据库
2024表白墙PHP网站源码
2024表白墙PHP网站源码
46 1
|
存储 XML JSON
简简单单搞一个实用的Android端搜索框
效果很常见,就是平常需求中的效果,上面是搜索框,下面是最近和热门搜索列表,为了方便大家在实际需求中使用,配置了很多属性,也进行了上下控件的拆分,也就是上边搜索框和下面的搜索列表的拆分,可以按需进行使用。
210 0
|
人工智能 Java 程序员
我见众生皆无意,唯有见你动了情(表白日记分享篇)
​                                        💕 我见众生皆无意,唯有见你动了情 💕                                                            ​ 目录                                                                                 💕 我见众生皆无意,唯有见你动了情 💕 0  写在前面 1.利用ASCII码使数字转化为中文 (GB_2312 字符集) (1)两个特定的ASCI
156 0
我见众生皆无意,唯有见你动了情(表白日记分享篇)
|
Kubernetes Ubuntu 关系型数据库
这不是愚人节玩笑,我们回来了:Typecho 1.2.0 发布!
这不是愚人节玩笑,我们回来了:Typecho 1.2.0 发布!
293 0
这不是愚人节玩笑,我们回来了:Typecho 1.2.0 发布!
|
数据库管理
|
数据库
|
安全 开发工具 Windows
抱歉,Xposed真的可以为所欲为——5.我自己刷的Xposed凭什么不给我用(上)
分析定位排查下厨房APP检测手机是否安装了Xposed框架的方法,然后一步步 Hook掉对应代码,以此去掉恶心的重复弹出警告对话框。
269 0
|
Java Android开发 Kotlin
抱歉,Xposed真的可以为所欲为——5.我自己刷的Xposed凭什么不给我用(下)
分析定位排查下厨房APP检测手机是否安装了Xposed框架的方法,然后一步步 Hook掉对应代码,以此去掉恶心的重复弹出警告对话框。
239 0
|
API
抱歉,Xposed真的可以为所欲为——1.基础知识储备(下)
本节简单介绍了什么是Xposed,基本原理,如何创建一个Xposed项目以及Xposed常用的类与方法。
759 0
|
Java Linux API
抱歉,Xposed真的可以为所欲为——1.基础知识储备(上)
本节简单介绍了什么是Xposed,基本原理,如何创建一个Xposed项目以及Xposed常用的类与方法。
444 0