逆向_第一题 Easy_VB

首先,拿到的是一个可执行的exe文件

看图标和描述似乎是VB程序,但是不管它,万一是障眼法呢,丢到PEID看看文件格式

确实是VB文件(注:CTF没有无聊到写个C++程序换个VB图标冒充VB程序。哈哈)

运行程序:

程序长这样,要做的似乎是把8个数字填对按下按钮?

直接X32 Dbg 伺候(OD也可以)。

查看窗口句柄后,发现2个按钮,一个是确定,一个是获取Flag,初步判断是当你所有数字输对的时候,出现一个获取Flag的按钮,点击获取Flag。

先给确定按钮下断点,VB程序调试有特殊的技巧来寻找按钮点击事件

Ctrl + Shift + B 搜索 81 6b 2c ,匹配到3具有该特征的地址

双击进入代码段,给3个位置都下好断点

点击上面的确认按钮

程序成功断下,单步F8跟踪至按钮事件具体执行程序

单步一直往下走,遇到个循环

F4 跳过循环,继续往下走,遇到个关键跳转,至于为什么是关键跳转,是因为过了这个跳转,基本就快到子程序结尾了,修改ZF标志寄存器

改变跳转分支后,直接F9运行程序查看结果

这时候弹出消息框,点确认。

窗口界面变成这样子,尝试点flag试试。

在之前下的这个断点断下。单步F8跟踪

这次来到了这个按钮的子程序事件之中,继续单步F8跟踪,遇到个跳转

眼尖的同学可能已经看到了我们的flag了:MCTF{_N3t_Rev_1s_E4ay_}
我们把断点全部取消,运行程序,把Flage放到输入框试试。

验证成功(若输入框里的内容不对,会提示try,again)