先查壳,发现为32位无壳
按tab转换为c语言伪代码,并跟进DialogFunc
分析代码,由第26行可知flag长度为8位
又发现sub_4010F0和sub_401000可能对字符串做出了改变,分别跟进,先跟进前者,如下
由于内容过乱我们将其再次编写为可执行的c语言代码
接下来我们继续跟进sub_401000,内容多的有点懵了,往下滑发现有个byte_407830可以跟进
跟进后不难发现为base64编码形式,也就是说我们需要对其所对应的v4和v5进行解码,结果如下
而我们已知flag长度为8,后六位我们解码已得出,但是不知道顺序,现在需推断出前两位,因为上面破解的长字符串中(也就是sub_4010F0中)的结果可知前两位为'U' 'J',又因为第三位为‘W’
所以得出flag为UJWP1jMp