首页
社区
课程
招聘
为什么这段函数的返回再程序里找不到
发表于: 2006-6-12 13:05 3913

为什么这段函数的返回再程序里找不到

2006-6-12 13:05
3913
mov ecx, dword pt[esp+10]
mov edx,**
mov eax
push ecx
push edx
push eax
call ********
add esp,*******
xor eax, eax
ret 0010   <=====这里返会在程序里找不到,应该怎样才能知道它返回哪里谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
    我是外行,平时是动态跟到'ret 0010'时看ESP中的值,或者干脆跟到程序返回才知道.不知道内行们是怎样做的.
2006-6-12 17:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
可以告诉我怎么办吗?谢谢
2006-6-13 11:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
请大虾指点,或给点相关文章
2006-6-13 14:14
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
记得ret x
的 x 是调整栈的平衡吧..
2006-6-13 14:43
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
6
最初由 康科 发布
mov ecx, dword pt[esp+10]
mov edx,**
mov eax
push ecx
push edx
........


向上找到这个函数的入口,下中断,再次运行程序,中断在入口后到堆栈窗口中看看会给你惊喜的。或者到OD的堆栈调用记录窗口中看看。
2006-6-13 14:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢,可以举个例子吗?
我不懂汇编,但是我必须要改这个程序。
我只是为了使用上的方便。。
所以靠自己。

我按F8,它就跳70*****的地址,但是反汇编的都是40****的
2006-6-13 15:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请大虾指点..
2006-6-13 22:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
RET X
的意思是 EIP = stack.pop ( EIP = SS:[ESP], ESP = ESP + 4 )
然後 ESP = ESP + X

所以,必?要看??的 stack 才知道?回到哪
2006-6-14 10:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你的返回地址是调用系统的函数 很多时候用控件会出现你说的情况
2006-6-15 02:20
0
雪    币: 207
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
mov ecx, dword pt[esp+10]
mov edx,**
mov eax
push ecx
push edx
push eax
call ********
add esp,*******
xor eax, eax
ret 0010   <=====这里返会在程序里找不到,应该怎样才能知道它返回哪里谢谢

在add esp,*******
这一行********的值应该为C就对了
也就是add esp,0C
或add esp,eax   eax=C
你让********里面的值为C就可以了
2006-6-15 02:29
0
游客
登录 | 注册 方可回帖
返回
//