百度杯十一月赛题CrackMe01
1
用IDA打开,只有一个信息框,所以从弹窗下手
搜索message API
看到MessageBoxW
双击进去,Ctrl+X查看调用,发现没有被调用,于是放过
弹窗有可能为窗口类,搜索window
找到ShowWindow
双击进入
自定义消息的位置
004028A5处 ebx累加
查看发送消息的API
Post MessageW
进入
F5查看伪码
把eax里的数组取出2c的长度,异或即可
2
通过ShowWindow 定位到进行判断的函数
可以发现这里的 DrawTextW 就是将chText打印到程序中央。
可以看到这里有一堆Unicode编码的 文本。然后在程序上往上翻
这里对chText按位用同一个字符进行异或。 直接爆破。
#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; }
|
ICHUNQIU_FE362DBE