首页
社区
课程
招聘
[求助]SoftICE断点问题
发表于: 2005-1-10 15:36 4287

[求助]SoftICE断点问题

2005-1-10 15:36
4287
winxp sp1
运行《加密与解密》书中的TraceMe
SoftICE中输入
bpx GetDlgItemTextA
显示:

00) bpx user32! GetDlgItemTextA

运行TraceMe 填用户名和序列号 check SoftICE 弹出

数据窗口后面显示:

USER32!SendDlgItemMessageA+00A7
001B:77D365F9    E9B9A5FFFF    JMP 77D30BB7
USER32!GetDlgItemTextA
001B:77D365FE    55            PUSH EBP
...                            MOV EBP, ESP
                               PUSH DWORD PTR [EBP+0C]
                               PUSH DWORD PTR [EBP+08]
                               CALL USER32!GetDlgItem
                               TEST EAX, EAX
                               JZ ...

停在DLL中
此时如果Ctrl + D 隐去SoftICE则一闪有出现SoftICE界面,
说明GetDlgItemTextA连续调用两次,正确拦截的话刚好对应程序中的连续两次调用,但如果按F12跳出函数,
则SoftICE界面隐去出现序列号错误,再来一次的对话框
十分不解,
是不是断点拦截得不对?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
这个例子我没看过
讲讲我的看法
第一次在GetDlgItemTextA断下,此时是在softice的窗口下
如果ctrl-d就是退出窗口也就是让程序继续跑,跑的过程因为这个断点有效,所以又断下了

F12应该是停在ret词句后吧,意思就是返回到调用GetDlgItemTextA的地方。
有什么不对的楼下补充指正
2005-1-10 16:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是这样,但用的时候SoftICE停的地方是
USER32!SendDlgItemMessageA+00A7
不是GetDlgItemTextA的领空
F12后直接就出来了,程序运行跳出对话框说输入不对
2005-1-10 20:44
0
雪    币: 212
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 jackie 发布
是这样,但用的时候SoftICE停的地方是
USER32!SendDlgItemMessageA+00A7
不是GetDlgItemTextA的领空
F12后直接就出来了,程序运行跳出对话框说输入不对


>>USER32!SendDlgItemMessageA+00A7
>>001B:77D365F9    E9B9A5FFFF    JMP 77D30BB7
>>USER32!GetDlgItemTextA
>>001B:77D365FE    55            PUSH EBP
>>...                            MOV EBP, ESP
>>                               PUSH DWORD PTR [EBP+0C]
>>                               PUSH DWORD PTR [EBP+08]
>>                               CALL USER32!GetDlgItem
>>                               TEST EAX, EAX
>>                               JZ ...

是断在USER32!GetDlgItemTextA那里。
只不过代码窗口的第一行是USER32!SendDlgItemMessageA+00A7说明
001B:77D365F9    E9B9A5FFFF    JMP 77D30BB7
这一行是USER32模块,SendDlgItemMessageA函数里的代码。

USER32!GetDlgItemTextA
代表下面的代码是GetDlgItemTextA函数的代码呀!还有你断在那有颜色区别
的吧。

>>停在DLL中
>>此时如果Ctrl + D 隐去SoftICE则一闪有出现SoftICE界面,
不要按CTRL+D,按F11或者一次F12+F8,这样就回到TraceMe的领空了!

还有我说一下F11和F12的功能吧。
F11的功能是执行地址。不明白什么意思?
1 push eax
2 push ebx
3 call fun1
4 push eax
5 push ebx
6 call fun2
比如你在函数fun1下了断点,断了下来后是在fun1的代码里面的,你直接按F11就回到调用fun1函数的代码的下一句了(4 push eax)。

F12就是停在下一个RET那里。

还有《加第二版》117页,“按F12键,回到调用函数的地方,此时代码窗口和数据窗口之间的一行。。。。。。。。”应该改成按F11吧。
2005-1-11 00:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
多谢回复,F11是可以的

查了一下联机帮助
F11 G @SS:EIP Go to
F12 P RET Return from the procedure call
是不是说:
因为当前停在函数开始执行的地方此时堆栈中有返回地址(被凋函数的执行后的下一条指令地址),
G @SS:EIP 的意思刚好是执行到堆栈中的这个EIP的地址,所以就跳出被凋函数GetDlgItemTextA
2005-1-11 19:44
0
游客
登录 | 注册 方可回帖
返回
//