首页
社区
课程
招聘
[原创]2021腾讯PC客户端初赛题解(对大佬解题手法的学习)
发表于: 2021-4-14 16:24 8320

[原创]2021腾讯PC客户端初赛题解(对大佬解题手法的学习)

2021-4-14 16:24
8320

这道题,我当时没有做出来,有思路,但是感觉总差一点东西。最近看到了一些帖子,是关于这个,写的很好。我也学到了很多。今天这个帖子,一方面是由于很久没有发了,另一方面也是希望可以学到东西。


——题记


前期的准备

a. 查壳

通过工具,发现没有壳,同时也可以知道一些段的信息。这里不多做赘述。


b. 运行观察

直接正常运行程序,发现该程序有一下的特点。第一,标题是XDDDDDDDD;第二,有一个画布,上面有一个箭头,感觉是一种提示;第三,鼠标光标消失,并且屏幕随鼠标移动。


c. 发现线索

在上面的基础上,认为可以有一下的线索。第一,搜索字符串,“XDDDDDDDD”;第二,搜索读取桌面鼠标的IPA,WindowsFromPoint;第三,可能存在ASLR。

验证以上猜想,打开OD,ALT+T,搜索字符串,果然结果如下:


这里很显然,这个函数,需要压入5 个参数,大胆认为,这里是构造窗口的。

搜索WindowsFromPoint,得到的结果如下:


然后这里的上下文还有很多其他的API及作用,也一并将它们贴出来,分享一下。

载入OD,动态调试一下,发现每次的基地址都不一样,所以很显然,这里存在ASLR。需要我们使用PE工具,来关闭ASLR。对于什么是ALSR,文章的最后面,我会回答大家。

2.        关闭ASLR,分析主函数

通过ALSR disabler来关闭ALSR。


然后重新载入IDA,通过动态调试,可以定位到winmain(这个地方,如果没有看到,那就就需要载入后,逐步单步跟踪,那麽一定会看到的。)

F5得到如下的伪代码:

为了更加清晰,这里采用OD,来动态调试一下,ctrl+G,搜索GetModuleFileNameA,然后F2,下断点。然后运行。



然后通过OD插件:用来将内存窗口中按照指定字节数选中数据并将数据保存到硬盘 ,点击可以下载。题目需要我们找到flag,所以我们需要把这些图的内存找到。注意到这一部分,很特殊,这里存储的是浮点数,如下图;


很显然,这里存储的就是这些图的内存。这个时候,寄存器的值如下:



选择相应的内存格式,发现这一部分,存储的都是坐标。

这个时候,就需要使用上面的插件,将这里的内存数据给dump下来,然后将它们使用代码,转换成数字。(下面,是我借鉴别人的代码)

然后通过python来显示,画图。

最后就得到了flag




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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 1475
活跃值: (14652)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
2

奥利给干了兄弟们!

最后于 2021-4-14 17:31 被SSH山水画编辑 ,原因:
2021-4-14 17:25
0
雪    币: 388
活跃值: (892)
能力值: ( LV3,RANK:32 )
在线值:
发帖
回帖
粉丝
3
学到了
2021-4-15 22:43
0
游客
登录 | 注册 方可回帖
返回
//