动态调试TraceMe程序
对这个对话框进行功能分析,当我们输入用户名和密码后,系统有可能会调用GetDlgItemText()函数(常用于获取对话框控件的内容信息)获取Text里面的信息。
系统调用GetDlgItemText()函数至少2次,第1次获取用户名;第2次获取序列号。获取到用户名和序列号后,他可能会把输入的序列号和真正的序列号(也可能会比较用户名和序列号两个参数)进行比较(常用lstrcmp,代表long类型的string compare,即long类型字符串比较函数),相同则弹出成功对话框;不相同则弹出失败对话框。
options-->debugging options,选events选项卡,选择WinMain(或EP),这样每次加载就会直接到WinMain函数,按Ctrl+F2重新加载程序。
Alt+C返回到CPU窗口,在命令行输入bp GetDlgItemTextA,按Alt+B确认断点有效
就是看一看真正的序列号是多少。还记得我们之前并没有跟进的一个函数lstrcmpA吗?我们重新加载程序,再次跟进到这个函数。