查看文件信息
无壳
IDA 静态分析
来到 main()函数处
我们可以看到 程序有个if 判断 进入sub_40102A()函数 发现没什么 IsDebuggerPresent()函数猜测应该是判断程序是否进入调试阶段
_debugbreak() //在代码中引起断点 提示用户运行调试程序
我们进入 sub_40100()函数
他返回result 明显是加密后的flag 但是 他应该没有调用
那么我们就可以用OD动调就可以
动态调试
首先 我们需要先找到 弹窗跳转的指令
F8单步
我们可以看到 当程序执行到这个代码时 跳出弹窗
那么 我们可以在段首 下断点
F9程序重新运行,然后F8单步运行
我们可以修改Z的位置 为0(让他实现跳转),因为有调试检测机制,所以需要让他实现跳转
int3的位置 会跳转到无用的代码 所以我们需要将int3的位置nop掉
然后继续F8单步,jmp的位置也是一样的
F8继续单步
发现第一次弹窗没什么东西
注意 在下一个jmp 他会直接跳转到结束的位置 我们要直接把他nop掉
F8继续单步
那么就可以成功跳出 flag
那么 我们就可以用 QQ截图拾取文字获取flag
getflag
flag{reversing_is_not_that_hard!}