-
-
[旧帖] [求助]IDA调试时,压入堆栈的参数在进入子函数前无法看到其真正内容 0.00雪花
-
发表于: 2007-12-12 04:04 3303
-
在IDA中调试,一个比对字符串的子函数,其调用前压堆栈的代码和数据段如下:
code:
.text:004697CB mov [ebp+var_3C], 0
.text:004697CF lea edx, [ebp+var_6A]
.text:004697D2 push edx ; char *
.text:004697D3 lea eax, [ebp+var_44]
.text:004697D6 push eax ; char *
.text:004697D7 call _strcmp
Data:
0012C6C2 var_6A db 39h ;edx
0012C6C3 db 38h ; 8
...................
0012C6E5 db 0 ,0A7h ,0 ; ?
0012C6E8 var_44 db 39h ;eax
在此时查看eax和edx的数据都是一样的39h,然而在用F7进入子函数后,却发生了变化
在子函数的第一行中断后,代码和数据如下:
Code:
.text:004C4330 arg_0= dword ptr 4
.text:004C4330 arg_4= dword ptr 8
.text:004C4330 mov edx, [esp+arg_0]
此时中断在第一行未执行,
Data:
0012C544 arg_0 dd offset s_9865e816 ; "9865E816"
0012C548 arg_4 dd offset s_9865e816_0 ; "9865E816"
其指向的数据段如下
0012C6C2 s_9865e816_0 db '9865E816',0 DATA XREF: Stack[000005F4]:arg_4
0012C6CB db 0
.............................
0012C6E4 dd 0A70000h ; debug027:unk_A70000
0012C6E8 s_9865e816 db '9865E816',0 DATA XREF: Stack[000005F4]:arg_0
此时,数据段的数据就是真实需要比较的字段了,
请问在进入子函数前,为什么无法看到这两个字段的真实内容,而这两个地址的内容又是在哪个被更改的呢?
重新用softice做了一遍,发现在进入子函数前该地址可以看到相应的待比较的字符串,为什么IDA不能正确显示该字符串内容呢?
code:
.text:004697CB mov [ebp+var_3C], 0
.text:004697CF lea edx, [ebp+var_6A]
.text:004697D2 push edx ; char *
.text:004697D3 lea eax, [ebp+var_44]
.text:004697D6 push eax ; char *
.text:004697D7 call _strcmp
Data:
0012C6C2 var_6A db 39h ;edx
0012C6C3 db 38h ; 8
...................
0012C6E5 db 0 ,0A7h ,0 ; ?
0012C6E8 var_44 db 39h ;eax
在此时查看eax和edx的数据都是一样的39h,然而在用F7进入子函数后,却发生了变化
在子函数的第一行中断后,代码和数据如下:
Code:
.text:004C4330 arg_0= dword ptr 4
.text:004C4330 arg_4= dword ptr 8
.text:004C4330 mov edx, [esp+arg_0]
此时中断在第一行未执行,
Data:
0012C544 arg_0 dd offset s_9865e816 ; "9865E816"
0012C548 arg_4 dd offset s_9865e816_0 ; "9865E816"
其指向的数据段如下
0012C6C2 s_9865e816_0 db '9865E816',0 DATA XREF: Stack[000005F4]:arg_4
0012C6CB db 0
.............................
0012C6E4 dd 0A70000h ; debug027:unk_A70000
0012C6E8 s_9865e816 db '9865E816',0 DATA XREF: Stack[000005F4]:arg_0
此时,数据段的数据就是真实需要比较的字段了,
请问在进入子函数前,为什么无法看到这两个字段的真实内容,而这两个地址的内容又是在哪个被更改的呢?
重新用softice做了一遍,发现在进入子函数前该地址可以看到相应的待比较的字符串,为什么IDA不能正确显示该字符串内容呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- [求助]服务程序的调试 2693
- [求助]IDA调试时,压入堆栈的参数在进入子函数前无法看到其真正内容 3304
- [求助]请问在堆栈的返回地址如何下中断 2502
- [求助]如何将中断指定为读硬盘上的特定文件 3025
- [求助]在函数的尾部用retn 一定会回到调用该函数的位置么? 4994
看原图
赞赏
雪币:
留言: