首页
社区
课程
招聘
[原创]某聊天软件逆向学习笔记——消息组包位置定位
发表于: 2020-8-18 17:05 3857

[原创]某聊天软件逆向学习笔记——消息组包位置定位

2020-8-18 17:05
3857

一、前言

各种某聊天软件各种机器人被制裁,发现网上很少有分析的帖子,萌新研究下某聊天软件的发消息Call。


二、分析工具

IDA、XDBG、CE


三、分析思路

(1)(错误操作)大胆猜测一下软件流程。先找到聊天框中数据的位置,然后下硬件访问断点,没准就到了构造数据包的位置。


(2)可以从发送按钮下手,虽然找发送按钮比较麻烦。但是,回车也是可以发送消息的。那么我们可以在窗口按钮事件下个断点,然后对聊天框中数据的位置下个硬件访问断点,没准能够找到数据包构造的位置。


四、操作步骤

思路1操作步骤

(1)使用CE 搜索一下输入框的值,多改变几次。最后剩下了两个地址


(2)修改一下这两个地址的值,看看最后会发送出去的值是根据哪个地址的值决定的。测试发现,修改0x74C9EE38 这个地址的值时,会自动还原。修改0x407B510这个地址的值,聊天框中的内容和0x74C9EE38 这个地址的值都会跟着变化。


(3)按照思路对0x407B510这个地址下个硬件访问断点说不定能到达构造数据包的位置了,美滋滋。XDBG中下了硬件访问断点后,riched20.dll、gdi32full.dll疯狂访问,完全不给我点发送的机会。我吐了,换个思路。


思路2操作步骤

(1)下个按键消息断点,打开XDBG,Ctrl + G。TranslateMessage,右键条件断点[arg.get(0)+4] == 0x100。然后顺利的异常了。。。。。


(2)百度一搜,发现在十一年前就有大佬遇到过这种问题。https://bbs.pediy.com/thread-93689.htm。经过一番查找,好像没有比较简单的解决方法,同时经过几次测试发现,好像这里的检测并不是特别严格,XDBG 还是有几率抢到处理权。苦于太菜没有好的解决方案,先放弃解决。

 

(3)经过两三次尝试后,顺利在TranslateMessage处断了下来,且没有异常,随后根据思路1中的步骤(1)(2)找到输入框数据的位置并下硬件访问断点,按F9运行中断后得到如下堆栈。

 

(4)取消前面对聊天框中值设置的硬件访问断点。riched20.dll、gf.dll 这两个模块就不看了,直接在XDBG中将模块设置为系统模块。


(5)Alt + F9运行到用户代码,然后来到了afctrl.dll模块中。


(6)继续F8往上回溯,回溯几步之后,发现了一个比较可疑的导出



(7)看到这里,这么可疑,当然是打开IDA。


(8)看到这里的情况,感觉比较像组包。继续F7大法,往下面分析。进入到步骤(7)中的sub_5026EB48函数中。


(9)在XDBG来到sub_5026EB48,修改v24的值后发送消息也跟着变化,可以确定这里就是消息组包的位置了。位置大概定位到了,可以先还原下这一块的逻辑。


五、未完待续

。。。。。。。。。






[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
期待后续,组包定位了,发消息call呢
2021-2-24 19:40
0
游客
登录 | 注册 方可回帖
返回
//