32位无壳
先试着运行exe文件,得到如下结果符合题目 描述输出的玩意是乱码
用ida解析
主函数逻辑,跟进sub_40102A()函数中
发现函数的返回值默认为0,但是!0就意味着if所包含的语句会一直被默认执行 ,联想到我们一开始看到程序运行起来的乱码,我们就确定if所包含的语句就是导致乱码发生的原因
结合汇编发现if语句的默认正是跳过了sub_401000所以我们猜测这个被跳过的藏有flag
开始动态调试
执行完成后面就是退出不需要再执行此时edx地址中就存在flag
出flag
flag{reversing_is_not_that_hard!}
也可以将1处跳转nop掉单步走到003910C7去触发messageboxA
这样也能得flag