百度杯十一月赛题CrackMe01

Author Avatar
kabeor 2月 01, 2018

百度杯十一月赛题CrackMe01

1

mark

用IDA打开,只有一个信息框,所以从弹窗下手

搜索message API
mark

看到MessageBoxW
mark
双击进去,Ctrl+X查看调用,发现没有被调用,于是放过

弹窗有可能为窗口类,搜索window
mark

找到ShowWindow

mark
双击进入

mark
自定义消息的位置

004028A5处 ebx累加

查看发送消息的API
mark

Post MessageW

进入
mark

F5查看伪码
mark

mark
把eax里的数组取出2c的长度,异或即可

2

通过ShowWindow 定位到进行判断的函数
mark
可以发现这里的 DrawTextW 就是将chText打印到程序中央。
mark
可以看到这里有一堆Unicode编码的 文本。然后在程序上往上翻
mark
这里对chText按位用同一个字符进行异或。 直接爆破。
mark
mark

#include "stdafx.h"
#include<iostream>
#include<string.h>
using namespace std;

int main()
{
char flag[] = { 0xF0,0xDA,0xD7,0xD1,0x8C,0xFF,0xF5,0xFE,0xE3,0xF8,0xE7,0xFF,0xE3,0xE9,0xF0,0xF3,0x85,0x80,0x84,0xF2,0xF4,0xF3,0 };

for (int x = 0; x < 0xFF; x++)
{
for (int i = 0; i < strlen(flag); i++)
{
printf("%c",flag[i] ^ x);
}
printf(" %X\n", x);
}
cin.get();

return 0;
}

mark

ICHUNQIU_FE362DBE

From https://kabeor.github.io/百度杯十一月赛题CrackMe01/ bye

This blog is under a CC BY-NC-SA 4.0 Unported License
本文链接:https://kabeor.github.io/百度杯十一月赛题CrackMe01/