首页
社区
课程
招聘
[旧帖] [求助]这种call的作用是??? 0.00雪花
发表于: 2011-8-31 19:01 1720

[旧帖] [求助]这种call的作用是??? 0.00雪花

2011-8-31 19:01
1720
跟进call里:
push ..
push ..
mov eax,fs:[0]
push eax
mov fs:[0],esp
sub esp,...
mov eax,[esp+返回ip];这里是把call压入的返回地址赋予eax
mov [esp+返回ip],ebp
lea ebp,[esp+返回ip]
push eax
retn

经常看到这样的call,是干什么用的???

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么作用啊?????????
2011-8-31 19:14
0
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有点像SEH
2011-8-31 19:21
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有人知道是什么吗?
2011-9-1 14:20
0
雪    币: 343
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
操作TEB?
2011-9-1 14:27
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
6
明显不是

75D2F41B > 64:A1 18000000   mov     eax, dword ptr fs:[18]
75D2F421   8B40 30          mov     eax, dword ptr [eax+30]
75D2F424   0FB640 02        movzx   eax, byte ptr [eax+2]
75D2F428   C3               retn
一共就四条指令teb-peb-DebuggedFlag

上半部分装seh
下半部分 将返回地址取回eax
然后push eax,retn
相当于jmp eax
sub esp,。。开辟空间后应该还有实际功能指令
总之上面的这些指令没什么实际功能
2011-9-1 14:43
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
SEH的序言函数_seh_prolog之类的,应该都是些简单的指令,目的是保存原来的EBP,然后初始化新的EBP,构造函数调用帧。

prev_er         dd ?          ; prev _EXCEPTION_REGISTRATION_RECORD  
  handler         dd ?          ; handler  
msEH_ptr        dd ?          ; scopetable  
disabled        dd ?          ; trylevel  
currentframe dd?           ; ebp

从这段代码分析,外面call的时候会压栈返回地址,就在这个返回地址的地方保存原来的EBP,然后使用这个地址作为新函数的EBP,相当于
push ebp;
mov ebp, esp;

开头的2个push分别是trylevel和scopetable,然后是handler和原来的fs:[0], 感觉少一个push,这段代码可能不完整。

不知道你的问题具体是什么?
2011-9-1 14:48
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
参考这个文章:SEH中的prolog和epilog
2011-9-21 10:58
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习。。。。。。
2011-9-21 11:06
0
游客
登录 | 注册 方可回帖
返回
//