将CrackMe.exe拖进IDA进行分析
1.首先看main函数:
sub_401210()的返回值应该为1,所以!sub_401210()为0,进入else。
2.观察sub_401210函数:
可以看到需要满足5个if,才能使得返回值为1。
- 第一个if:
可以看出v1的长度为25,v1[4]为 ‘{‘,v1[8]、v1[10]、v1[15]为’_’,v1[24]为’}’
v1应该就是flag了,那么其前四位应该就是’flag’这四个字母。
到目前为止,v1为:flag{XXX_X_XXXX_XXXXXXXX}
通过百度可以查到,wcstok
是用来对wchar_t
类型的数进行分割的。wcstok(v1, L"{_}")
这句话就是表示对v1在’{‘、’_’、’}’这几个字符处进行分割。
第一次分割,碎片’flag’被遗弃。第二次分割,v4等于XXX。
- 第二个if: