攻防世界mfc逆向-200

分析

首先查壳

image-20221008162605173

32位有VM的壳,那就先不用IDA,这是一个exe的程序,点开之后是这个样子

image-20221008162722249

然后结合题目所给的提示mfc,然后就想到mfc逆向且出来就是一个窗口,然后就用spy++(窗口专用工具)去看一下

image-20221008163600740

然后拖动这个到程序中的地方

image-20221008163626932

image-20221008163709714

这里的类没有东西,然后换一个地方查找

image-20221008164240495

这里出现了类,然后打开xspy(mfc逆向工具去)去看看

image-20221008164428080

同样是使用这个东西去查找

image-20221008164518375

然后对下面的东西去分析

WM_SYSCOMMAND(0112):当用户从 “窗口 ”菜单中选择命令时,窗口会收到此消息, (以前称为系统或控件菜单) ,或者当用户选择最大化按钮、最小化按钮、还原按钮或关闭按钮时

WM_PAINT(000f):当系统或其他应用程序发出绘制应用程序窗口部分的请求时,将发送 WM_PAINT 消息

WM_QUERYDRAGICON(0037):发送到最小化的 (标志性的) 窗口。 窗口将由用户拖动,但没有为其类定义的图标。 应用程序可以将句柄返回到图标或游标。 当用户拖动图标时,系统会显示此光标或图标

然后那个0464并没有被定义,那就给它发消息,看看它会给个什么回复

脚本

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main()
{
HWND h = ::FindWindow(NULL, "Flag就在控件里");
if (h)
{
SendMessage(h, 0x464, NULL, NULL);//这个0x464是特殊的常量别的没有
}

system("pause");
return 0;
}

关与如何写这个脚本

image-20221008165952619

这个是查找窗口

image-20221008170117948

这个是发送消息

运行完之后就会有这个结果

image-20221008170329299

然后知道这个是Des加密还知道了密匙,然后之前它的类应该就是密文了,开始解密

image-20221008170541115

得到flag:thIs_Is_real_kEy_hahaaa