12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 331|回复: 0

TIMHack 敲门狂魔又将重出江湖

[复制链接]
发表于 2020-2-28 10:43:51 | 显示全部楼层 |阅读模式


先贴个动画

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

本章涉及内容


逆向分析
先对老程序入手,逆向一下看看有什么发现。


VB写的,无壳。直接拖VB Decompiler,可以看到一行关键代码,使用SendMessage的方法来发送消息的。不过现在很显然的已经无法使用了。
老方法炮制,使用Spy++监视消息



抓取多次切换状态的消息,发现并没有任何特殊的消息。可以看出这种通讯方式可能已经被废弃掉了。

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

速度基本满意,但作为一个技术控,这种实现显得有点LOW。发网上显得会很没面子?而且还不能后台轰炸并且做一些其他的事

中上层,尝试让菜单一直显示
这样的好处就是按键模拟的速度能够快很多,虽然没有成功,但是还是要讲解一下过程,凑一下字数。

核心代码是这样,Hook ShowWindow,不知道为什么TIM也inline hook了这个API,需要先恢复,并且重新Hook不然会造成不稳定。
ShowWindow参数为隐藏的,就跳过,使其不隐藏即可。效果如下

结果这些菜单并按不了,使用AccExplorer可以查看菜单的详细参数,不过意义不大。

底层抓包回放攻击
(这边跳过中层的逆向啥的,先讲底层是因为由底层来下断点获取关键代码更快速更方便。)
按照扣扣一贯的尿性,常用UDP作为通讯,并且使用TEA16进行加密。因为UDP的特殊性,并不需要长连接保持通讯,很方便的可以伪造数据包,所以很可能可以成功。

先用Wireshark抓包,找到关键封包。然后使用Python 2.7写个简易的UDP程序,连接服务器,回放。
(本来是想用WPE的,结果软件打不开,难道不兼容WIN7?)

演示程序如上,运行后即可看到TIM已隐身,测试完毕,说明可行。后面的将会使用GCC(C-Free)深入,Python的话并不是很适合操作二进制数据。

然后用C语言重写了下,并且实现了上下线切换。数据包发送间隔200ms声音更连续,发送太快话服务器可能会拒绝。
服务器拒绝之后,TIM的通讯会自动转变成http或者https通讯,以增加通讯的可靠性和安全性,其实只是个假象。


实际的话,其实还是原来类似的协议。从版本号来看只是版本稍微有些差异,封包的组成基本是一致的。通讯协议也并不是http或者https,顶多算是个使用了80/443端口的TCP协议。
TCP包的伪造可以使用RAWSOCKET或者libPCAP,这边只提一下,暂不深入了,有兴趣的话可以自行尝试。

中层实现,关键CALL
对sendto下断点,这边强调上面的UDP程序。对UDP程序有了解的话,就会知道sendto这个API是UDP协议专用的。
我们只需要对这一个API下断点就能得到关键地址。断到后然后再返回几次就来到了这个地址。

通过这个关键CALL可以得到一些关键的参数如下:
[Asm] 纯文本查看 复制代码IM.DLL+1DEEB0 在线 10 离开 30 隐身 40 忙碌 50
一开始我尝试使用Cheat Engine来获取隐身0,上线1这样的值。结果并分析不出来,因为TIM并没有使用常规的小数值。

跟进这个CALL(IM.DLL+1DEEB0 ),可以看到是一个创建包的过程。可以看到包的详细组成,和Wireshark上的模版显示的可以对照上。
调用这个CALL,能想到最简单的自然是注入shellcode,然后创建远程线程。

使用FASM编译一段调用,然后接下来你懂的!
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-29 11:06 , Processed in 0.109375 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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