吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17614|回复: 69
收起左侧

[调试逆向] TIMHack 敲门狂魔又将重出江湖

  [复制链接]
JuncoJet 发表于 2019-11-28 14:00
rect879.png
Timhack2.gif
先贴个动画

前言
大概在08年左右,有一款酷炫到炸的软件摆在我面前,我玩了好久。do!do!do!... 这寂静深夜里的急促的敲门声,总能换回一句”神经病啊!半夜不睡觉“。
在网上搜索了一番,发现我坛有的下载。然后就下载试了一下,果然用不了。
余下内容为无聊的研究,请选择性观看。

本章涉及内容
TIMHack.gif

逆向分析
先对老程序入手,逆向一下看看有什么发现。
Image 460.jpg
Image 461.jpg
VB写的,无壳。直接拖VB Decompiler,可以看到一行关键代码,使用SendMessage的方法来发送消息的。不过现在很显然的已经无法使用了。
老方法炮制,使用Spy++监视消息
Image 467.jpg
Image 468.jpg
Image 469.jpg
抓取多次切换状态的消息,发现并没有任何特殊的消息。可以看出这种通讯方式可能已经被废弃掉了。

上层实现,使用AutoHotKey编写自动化脚本
这个大概是最初级的吧,模拟鼠标按键,完了就能实现反复的上下线了,操作的速度的话一般比手速来的快。
[Actionscript3] 纯文本查看 复制代码
#1::
i=0
loop{
 click 1100,996 right
 click 962,713
 click 1100,996 right
 click 936,649
 i++
 if i>50
   return
}
return

代码是这样的,具体坐标请自行根据屏幕大小修改。
ahk2.gif
速度基本满意,但作为一个技术控,这种实现显得有点LOW。发网上显得会很没面子?而且还不能后台轰炸并且做一些其他的事

中上层,尝试让菜单一直显示
这样的好处就是按键模拟的速度能够快很多,虽然没有成功,但是还是要讲解一下过程,凑一下字数。
Image 466.jpg
核心代码是这样,Hook ShowWindow,不知道为什么TIM也inline hook了这个API,需要先恢复,并且重新Hook不然会造成不稳定。
ShowWindow参数为隐藏的,就跳过,使其不隐藏即可。效果如下
Image 457.jpg
结果这些菜单并按不了,使用AccExplorer可以查看菜单的详细参数,不过意义不大。

底层抓包回放攻击
(这边跳过中层的逆向啥的,先讲底层是因为由底层来下断点获取关键代码更快速更方便。)
按照扣扣一贯的尿性,常用UDP作为通讯,并且使用TEA16进行加密。因为UDP的特殊性,并不需要长连接保持通讯,很方便的可以伪造数据包,所以很可能可以成功。
Image 459.jpg
先用Wireshark抓包,找到关键封包。然后使用Python 2.7写个简易的UDP程序,连接服务器,回放。
(本来是想用WPE的,结果软件打不开,难道不兼容WIN7?)
TIMHack.gif
演示程序如上,运行后即可看到TIM已隐身,测试完毕,说明可行。后面的将会使用GCC(C-Free)深入,Python的话并不是很适合操作二进制数据。

然后用C语言重写了下,并且实现了上下线切换。数据包发送间隔200ms声音更连续,发送太快话服务器可能会拒绝。
服务器拒绝之后,TIM的通讯会自动转变成http或者https通讯,以增加通讯的可靠性和安全性,其实只是个假象。
Image 463.jpg
Image 464.jpg
实际的话,其实还是原来类似的协议。从版本号来看只是版本稍微有些差异,封包的组成基本是一致的。通讯协议也并不是http或者https,顶多算是个使用了80/443端口的TCP协议。
TCP包的伪造可以使用RAWSOCKET或者libPCAP,这边只提一下,暂不深入了,有兴趣的话可以自行尝试。

中层实现,关键CALL
对sendto下断点,这边强调上面的UDP程序。对UDP程序有了解的话,就会知道sendto这个API是UDP协议专用的。
我们只需要对这一个API下断点就能得到关键地址。断到后然后再返回几次就来到了这个地址。
Image 462.jpg
通过这个关键CALL可以得到一些关键的参数如下:
[Asm] 纯文本查看 复制代码
IM.DLL+1DEEB0 
在线 10 
离开 30 
隐身 40 
忙碌 50

一开始我尝试使用Cheat Engine来获取隐身0,上线1这样的值。结果并分析不出来,因为TIM并没有使用常规的小数值。
Image 458.jpg
跟进这个CALL(IM.DLL+1DEEB0 ),可以看到是一个创建包的过程。可以看到包的详细组成,和Wireshark上的模版显示的可以对照上。
调用这个CALL,能想到最简单的自然是注入shellcode,然后创建远程线程。
Image 465.jpg
使用FASM编译一段调用,然后接下来你懂的!

免费评分

参与人数 30威望 +2 吾爱币 +42 热心值 +21 收起 理由
wyf988hhh + 1 nb
小小沫涵 + 2 + 1 用心讨论,共获提升!
b1ackie + 1 + 1 谢谢@Thanks!
willJ + 1 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cduang + 1 + 1 用心讨论,共获提升!
夜光 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
JPK + 1 + 1 热心回复!
创栈 + 1 + 1 古今未有之秀者,非“牛逼”二字可喻
一只电子弱学狗 + 2 可能被打吧。这样玩。。。
熊猫 + 1 笑死。然后被拉黑
ad-min + 1 真的无聊!!!!!!!!!!!
梦天DreamSky + 1 用心讨论,共获提升!
三千十三 + 1 + 1 热心回复!
qiduo + 1 + 1 用心讨论,共获提升!
shun丶sir + 1 用心讨论,共获提升!
陈世界 + 1 + 1 热心回复!
nj001 + 1 + 1 热心回复!
忘了世界的人 + 1 + 1 热心回复!
林乔伊 + 1 闲得蛋疼是怎样的一种体验。。。
idiots + 1 热心回复!
liuyanjing + 1 卧槽,为啥会有这么无聊的大佬
生有涯知无涯 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
柠檬柚子加冰 + 1 怎么感觉会被人锤爆
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
q74330 + 1 我很赞同!
www.52pojie.cn + 1 + 1 防盗门能敲碎了么
悠悠手游 + 1 + 1 用心讨论,共获提升!
yiyedd + 1 + 1 用心讨论,共获提升!
dreamlivemeng + 1 + 1 谢谢@Thanks!
世俗红尘 + 1 看不懂

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

领悟。み 发表于 2019-11-28 14:52
怀念啊~可是qq上已经找不到聊天的人了.

免费评分

参与人数 3热心值 +3 收起 理由
Aries15123 + 1 我很赞同!
人肉汉堡senter + 1 我很赞同!
wxb123456 + 1 我很赞同!

查看全部评分

bester 发表于 2019-11-28 19:38
我是挺好奇你到底是几个大佬的综合体?怎么各种语言你都会,各种协议你都懂?
Hmily 发表于 2019-11-28 17:48
我记得这东西刚出来时候把别人烦死了,最后惨遭拉黑。
 楼主| JuncoJet 发表于 2019-11-28 17:25
代码通用性有一些问题,需要测试后更新工具
大衬衫 发表于 2019-11-28 14:10
虽然我不太懂,但是我还是觉得楼主很牛!
幽灵黑客 发表于 2019-11-28 14:12
恶作剧程序 好邪恶 !!哈哈哈
cmputer 发表于 2019-11-28 14:22
论坛大牛的头衔真不是白给的
shubaowang 发表于 2019-11-28 14:31
你字多,就服你
xdestroy 发表于 2019-11-28 14:36
表示看不懂
down_drop 发表于 2019-11-28 14:39
然后成品呐
alexskyboy 发表于 2019-11-28 14:59
完全看不懂尴尬
numbersi 发表于 2019-11-28 15:00
还可以这样操作 ~!?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 12:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表