首页
论坛
专栏
课程

[原创]追凶者也 writeup

2018-12-13 07:17 793

[原创]追凶者也 writeup

2018-12-13 07:17
793

追凶者也 writeup


 

用ida打开cm.exe之后发现WinMain调用了一个空函数2F1280,去start函数里看了看也没发现什么,但在使用ctrl+e跳转到入口点时发现存在TlsCallback函数:

 

 

首先是modi_mainfunc函数

 

 

其中304014指向函数2F1220,304018处指向的是函数2F1280;

 

结合断点分析发现这个函数改写了函数2F1280,使其跳转到函数2F1220;

 

 

之后还有一个modi_getext函数

 

 

在断点跟踪过程中能够发现该函数通过对比hash的方式找到GetDlgItemTextA函数地址,之后将该函数改写,让其去调用函数2F1A10

 

TlsCallback函数最后开启了一个线程:

 

 

将dword_3047FC作为开关,只要其为1就再次修改GetDlgItemTextA函数。

 

在TlsCallback函数结束后进入WinMain函数,之后:

 

2F1280->2F1220->DialogFunc->2F1040

 

 

2F1040会去调用修改后的GetDlgItemTextA,即会调用2F1A10函数。

 

2F1A10函数是验证输入的主要函数,结合断点跟踪分析函数流程如下:

 

 

 

 

do_move函数将byte-3047D0的数据作为3x3的九宫格,
首先根据第二个参数的值找到byte-3047D0中该值对应的行列位置:

 

 

之后根据wasd的方向,将该值向该方向移动一格(该格处的值必须是0才能移动)

 

 

再根据do_check函数中的初值和move函数中最后的检查,就是要通过移动将
413
725
860
变为
123
456
780
就可以了。根据初态容易判断先将第一行的1左移再将2上移就能整理好第一行,4 7 8 6可以先依次移开,于是

 

经过d6d8s7s4a1w2后变为

 

123
405
786

 

再之后 a5w6即可整理好第二行,同时第三行也完成了。

 

则最后的flag为d6d8s7s4a1w2a5w6

 



[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上一主题 下一主题
最新回复 (2)
柒雪天尚 2018-12-13 15:23
2
0
有意思
次元有名 1 2018-12-14 23:45
3
0
有想法
游客
登录 | 注册 方可回帖
返回