从最简单的开始来,先查一下壳,发现没有壳
OD打开程序,先运行,弹出信息框不用关,切换到OD界面按F12暂停程序,然后Alt+k,百度一下msvbvm50 user32发现是vb程序找到两个信息框,一个在00401EA9,一个在740CEE19,程序入口是00401000,00401EA9离得比较近,应该就是这个弹框了,右键显示调用(show call)
附近发现弹出眼熟的字样
再往上查查发现successful字样
在00401D9D处发现关键je跳转,直接nop掉发现成功
但是ctf中我们需要的是找到正确的注册码算法,继续分析,重新加载程序,往上找retn的时候发现入口点
下断点F8单步步过,
首次发现输入的数据 123456 在00401D70处出现,ecx=123456,放入栈中,接着放入SynTax 2oo1,接下来是一个call,名字里有strcmp,应该是比较函数,结果放到eax中,eax=-1,应该SynTax 2oo1就是注册码了,输入SynTax 2oo1后再看此处的eax就变为0了,发现正确