2024-04-25T02:48:39.png
对这个对话框进行功能分析,当我们输入用户名和密码后,系统有可能会调用GetDlgItemText()函数(常用于获取对话框控件的内容信息)获取Text里面的信息。

系统调用GetDlgItemText()函数至少2次,第1次获取用户名;第2次获取序列号。获取到用户名和序列号后,他可能会把输入的序列号和真正的序列号(也可能会比较用户名和序列号两个参数)进行比较(常用lstrcmp,代表long类型的string compare,即long类型字符串比较函数),相同则弹出成功对话框;不相同则弹出失败对话框。

2024-04-25T02:50:43.png

options-->debugging options,选events选项卡,选择WinMain(或EP),这样每次加载就会直接到WinMain函数,按Ctrl+F2重新加载程序。
2024-04-25T02:51:19.png

2024-04-25T02:52:55.png

2024-04-25T02:55:17.png

2024-04-25T02:57:39.png
Alt+C返回到CPU窗口,在命令行输入bp GetDlgItemTextA,按Alt+B确认断点有效
2024-04-25T02:58:11.png

2024-04-25T03:00:00.png

2024-04-25T03:00:28.png

2024-04-25T03:00:56.png

2024-04-25T03:02:53.png

2024-04-25T03:04:18.png

2024-04-25T03:12:10.png

2024-04-25T03:28:05.png

2024-04-25T03:30:29.png

2024-04-25T03:32:35.png

2024-04-25T03:41:39.png

2024-04-25T03:44:58.png
就是看一看真正的序列号是多少。还记得我们之前并没有跟进的一个函数lstrcmpA吗?我们重新加载程序,再次跟进到这个函数。
2024-04-25T03:55:00.png

2021-2022-2自编实验(训)指导书《软件安全与逆向分.doc

标签: none

添加新评论