首页
社区
课程
招聘
[原创]修改微信实现防撤回、自动抢红包功能
2018-4-12 13:42 25494

[原创]修改微信实现防撤回、自动抢红包功能

2018-4-12 13:42
25494

修改微信实现防撤回、自动抢红包功能

昨天看到大神skyun分享了一个实现微信主动发消息 防撤回 抢红包 骰子作弊 模拟位置 步数最高的模块。自己之前也搞过类似的事情,但是实现的方法不同,仅实现了防撤回 抢红包 修改步数的功能。其中修改步数是通过StepChanger实现的。防撤回、抢红包是通过修改微信APK实现的。这里主要描述一下防撤回、抢红包功能的实现思路。恰巧我修改微信的最新版本也是微信6.6.1。

效果图

基本思路

一来是因为不想装Xposed,二来是因为觉得通过Hook实现的方法不够优雅,所以想通过直接修改微信的方式来实现防撤回和抢红包的功能。

 

在修改微信的过程中,一个重要的原则就是尽量重用微信自带的界面和组件,以求添加的界面和原界面保持风格一致。

1 过掉校验和资源混淆

研究过微信的人肯定都知道,用apktool反编译微信,是不能重打包的,因为微信使用AndResGuard对资源做了混淆。即便用apktool d -r命令保持资源文件不变,重打包后的微信也不能运行,这是因为微信启动后会对自己的dex文件进行校验,校验失败就不能运行。

 

要过掉这两个问题也很简单,针对资源混淆的问题,使用ShakaApktool

 

针对校验问题,自己找到校验的位置然后把那一段代码patch掉。例如在微信6.6.1版本中,校验代码位于smali/com/tencent/mm/f/a.smali

    .line 532
    const v2, 0x19000

    :try_start_2
    invoke-static {v3, v2}, Lcom/tencent/mm/a/g;->a(Ljava/io/InputStream;I)Ljava/lang/String;

    move-result-object v2

    .line 533
    if-eqz v2, :cond_2

    iget-object v4, p0, Lcom/tencent/mm/f/a$a;->eHC:Ljava/lang/String;

    invoke-virtual {v2, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
    :try_end_2
    .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_6
    .catchall {:try_start_2 .. :try_end_2} :catchall_2

    move-result v2

    if-eqz v2, :cond_2

    .line 534
    :try_start_3
    invoke-virtual {v5}, Lcom/tencent/tinker/loader/shareutil/ShareFileLockHelper;->close()V
    :try_end_3
    .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_0

    .line 551
    :goto_1
    invoke-static {v3}, Lcom/tencent/mm/f/a;->b(Ljava/io/Closeable;)V

    goto :goto_0

2 研究微信的代码逻辑

这一部分主要是通过调试和Hook完成的。Hook框架用的Frida。调试用的Android Studio +
smalidea

 

当然root权限是进行hook和调试的基础。有了root权限,开启调试权限的方法有两种。

 

一是修改AndroidManifest.xml里面的android:debuggable属性为true,开启某个app的调试权限。
二是使用大神提供的工具mprop开启整个系统的调试权限。

 

调试和Hook的具体工作很繁杂,就不说了。

3 复用微信组件和界面

在研究完微信的代码逻辑后,就可以开始添加自己的代码了。反编译微信后得到的都是smali代码,手写那么多smali代码肯定是不太现实的。

 

这里采取的方式是用Android Studio新建一个工程,然后把微信的dex文件变成jar文件,再把这些jar文件当成库导入到工程中。接下来就可以写Java代码了。Java代码写好后,先编译成class文件,然后打包成dex文件,再反编译成smali文件。然后把这些smali文件复制到微信的代码目录中(这个过程好像有点蠢)。最后修改微信代码,在合适的地方调用自己添加的这些代码。

 

思路基本上是这样的,具体步骤太繁杂,这个就不写了。具体代码已经上传到Github,成品就不上传了。


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2018-4-12 13:44 被iweizime编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (35)
雪    币: 2565
活跃值: (2940)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
Snark 1 2018-4-12 15:05
2
0
雪    币: 76
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mingxuan三千 2018-4-12 15:34
3
0
现在都自己diy抢红包插件了。。。
雪    币: 4291
活跃值: (1931)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
cqzhou 2018-4-12 16:25
4
0
厉害厉害
雪    币: 1052
活跃值: (1018)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天涯一鸿 2018-4-12 17:15
5
0
66666,不过我个人还是觉得xposed的要好很多……直接改APP还是太暴力了
雪    币: 3907
活跃值: (5742)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 3 2018-4-12 18:26
6
0
火钳刘明
雪    币: 9
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
西海 2018-4-12 19:59
7
0
膜拜膜拜
雪    币: 239
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
七岁 2018-4-13 15:32
8
0
大神,  请收下我的膝盖,  就想问问,  做这个花了多少时间??挺想试试的
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2018-4-13 22:32
9
0
七岁 大神, 请收下我的膝盖, 就想问问, 做这个花了多少时间??挺想试试的
挺长时间的,你想做的话可以交流一下
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
petersonhz 2018-4-14 20:27
10
0
hook为什么不优雅呢
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
petersonhz 2018-4-14 20:28
11
0
天涯一鸿 66666,不过我个人还是觉得xposed的要好很多……直接改APP还是太暴力了
apk一更新,是不是要重新倒腾呢
雪    币: 267
活跃值: (318)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
U大师 2018-4-14 21:27
12
0
patch不是好方案,有封号风险,建议找到patch点用xposed
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huang16888 2018-4-17 13:26
13
0
没下载地址了。
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wuhaozhi 2018-4-26 16:19
14
0
iweizime 挺长时间的,你想做的话可以交流一下
大神,你这个我挺感兴趣,能不能留个联系方式请教一些
雪    币: 34
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xinyangs 2018-6-5 12:13
15
0
不怕封号,2333333
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
imsnail 2018-6-7 12:04
16
0
可否请教下楼主
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2018-6-7 17:47
17
0
imsnail 可否请教下楼主
你把问题写到github的issue里面吧
最后于 2018-6-7 17:47 被iweizime编辑 ,原因:
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ats 2018-6-16 22:40
18
0
大佬,软件能不能分享一下,万分感谢
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luskyc 2018-6-16 23:48
19
0
会不会封号?
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2018-6-18 10:57
20
0
yy虫子yy 会不会封号?
以前不会,现在会被警告
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ats 2018-6-18 21:56
21
0
iweizime 以前不会,现在会被警告
软件能不能分享一下,大佬
雪    币: 4
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
imhuster 2018-6-21 13:53
22
0
最新的微信版本中对xposed做了检测,请问各位大佬这个怎么破?
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2018-6-21 19:55
23
0
imhuster 最新的微信版本中对xposed做了检测,请问各位大佬这个怎么破?
不知道,我发的这个6.6.1的版本也会检测重打包,之前还没有
雪    币: 4
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
imhuster 2018-6-21 21:46
24
0
iweizime 不知道,我发的这个6.6.1的版本也会检测重打包,之前还没有
好像是从6.6的版本开始加了检测的
雪    币: 5
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
维达3层加厚 2018-8-9 15:37
25
0
楼主求一个联系方式
游客
登录 | 注册 方可回帖
返回