首页
社区
课程
招聘
[原创]简单的TIM防撤回逆向
2019-4-21 15:49 10736

[原创]简单的TIM防撤回逆向

2019-4-21 15:49
10736

0x1

加入看雪那么久了,都是在看各位大牛的逆向、病毒分析等,从来没有发过言,这个简单点的小例子能成为我在看雪的第一步。
现在的聊天软件都自带了撤回消息的功能,每次我们没有及时查看信息,被人撤回是,是不是心里难受痒痒着了?这个逆向撤回功能是之前学习的一个案例,现在分享一下。

0x2


发送的消息会在服务端和客户端都有保存。
服务端我们做不了什么,但是客户端我们可以不让他删除。
逆向逆向,猜的成分占有很大的一部分比例
TIM程序有很多的模块,我们先要做的就是确定下来撤回消息的功能写在了哪个模块内
我们用英文翻译软件来搜一下撤回的英文,撤回的英文单词有:revoke,cancel,recall等

 

我们可以用notepad++的文件搜索功能来看一下

 

可以看到IM.DLL内有与此相关的函数名

(PS:当然没有那么容易确认下来是这个模块,这就需要自己一个个去区分了,不在这里说那么多)

0x3

好了,知道撤回消息的功能是在哪个模块了,现在就拖入X32DBG进行逆向分析

  • 附加运行TIM
  • 搜索im.dll模块
  • 在模块内搜索字符串revoke相关的函数
  • 搜出来真多,在所有命令上设置断点
  • 好了,现在给TIM发送消息并且撤回,看看会触发哪个断点
    断在了此处
  • 单步运行看看运行到哪后TIM消息框内的消息被撤回了
    最后发现单步到这个函数后起效了
    直接nop掉,或者你喜欢也可以jmp跳转
  • 最后打补丁并且替换掉原先的im.dll

0x4

最后来看下效果吧

0x5

如果TIM更新后此方法会失效,需要重新打补丁!!
最后发现,打了补丁后程序不怎么稳定了,以前是完美运行的,可能是TX做了什么检测吧,这里就不再做深入的分析了。
微信、QQ的PC软件都可以参照类似的方法,移动端的话我还没有去看过。


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞6
打赏
分享
最新回复 (16)
雪    币: 2576
活跃值: (447)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
wyfe 2019-4-21 16:20
2
0
学习
雪    币: 9616
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
Sprite雪碧 1 2019-4-21 17:56
3
0
感谢分享 学习了
雪    币: 8
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
白幽灵 2019-4-21 17:57
4
0
52有很多表示已经搞定PC QQ 微信防撤回
雪    币: 15
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
古鄗 2019-4-21 21:50
5
0
思路不错,微信同理也可以这个思路来做吧。
雪    币: 8236
活跃值: (4946)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
大道在我 2019-4-21 23:37
6
0
我记得之前用过防撤回  修改版 吃内存不知道怎么回事卡死电脑 容易奔溃
雪    币: 52
活跃值: (2212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
实都 2019-4-22 14:57
7
0
就是要思路嘛,更好举一反三
雪    币: 9616
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
Sprite雪碧 1 2019-4-23 06:57
8
0

前天研究了一天,防撤回倒是很快写好了,但是想弹出一条灰框提示是谁撤回了消息。
最开始的思路是注入一个dll。在nop判断的地方jmp到自己的函数内,然后call这个灰框消息。
但是往下往上跟了半天也没找到这个call。(准确来说找到几个比较像的call)
下断也没找到这几个字的明文,最多也只是看到了字符串xml配置项ID。貌似是对字符串有加密。
睡觉的时候才想了下,加密和没有明文应该是为了防止恶意程序发送伪官方信息进行诈骗。
(哭笑不得)
(其实TX完全可以对撤回消息的那段代码做一个crc,然后报个错什么的)
最后于 2019-4-23 06:59 被Sprite雪碧编辑 ,原因:
雪    币: 12718
活跃值: (16352)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
有毒 10 2019-4-23 14:31
9
0
Sprite雪碧 前天研究了一天,防撤回倒是很快写好了,但是想弹出一条灰框提示是谁撤回了消息。最开始的思路是注入一个dll。在nop判断的地方jmp到自己的函数内,然后call这个灰框消息。但是往下往上 ...
腾讯的聊天软件的聊天消息应该都是加密处理了,你直接搜索是搜不到的,或者你可以看看是怎么加密的,岂不也是功德一件?
雪    币: 9616
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
Sprite雪碧 1 2019-4-23 17:44
10
0
有毒 腾讯的聊天软件的聊天消息应该都是加密处理了,你直接搜索是搜不到的,或者你可以看看是怎么加密的,岂不也是功德一件?[em_86]
能力有限,不太擅长逆向 目前已知是会通过一个字符串ID 从根目录的一个xml文件读字符串 这个xml基本存放了整个TIM的字符串
雪    币: 355
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Victorgg 2019-4-26 14:40
11
0
 感谢楼主分享,很有用啊
雪    币: 14
活跃值: (263)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwTrojan 2019-4-27 09:37
12
0
Sprite雪碧 前天研究了一天,防撤回倒是很快写好了,但是想弹出一条灰框提示是谁撤回了消息。最开始的思路是注入一个dll。在nop判断的地方jmp到自己的函数内,然后call这个灰框消息。但是往下往上 ...
其实吧...有笨办法就是用手机端进行对比...
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
b00t_root 2019-8-14 11:22
14
0
容易崩溃,求更最新版的TIM3.2.2
雪    币: 5921
活跃值: (4537)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
淡然他徒弟 1 2019-11-2 01:40
15
0
mark
雪    币: 43
活跃值: (1084)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
AMask 2019-11-2 13:47
16
0
感谢楼主分享
雪    币: 299
活跃值: (199)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
一只猪儿虫 2019-11-3 11:32
17
0
感谢楼主
游客
登录 | 注册 方可回帖
返回