首页
社区
课程
招聘
[旧帖] [求助]在反汇编的过程中经常看到函数的开头是mov edi,edi,这是啥意思? 0.00雪花
发表于: 2011-7-5 23:38 1707

[旧帖] [求助]在反汇编的过程中经常看到函数的开头是mov edi,edi,这是啥意思? 0.00雪花

2011-7-5 23:38
1707
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
2
再往前面看,是不是还有 5 个 nop ,不多 不少?

那是为 hotpatch 预留的。
2011-7-5 23:55
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
空操作,但不能仅仅望句生义,要看上下文。内存对齐?残余指令?
2011-7-6 00:00
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没意义的操作
2011-7-6 11:19
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
以前函数序言都是这么开头的,只有3个字节的序言,
push ebp
mov ebp, esp
后面的指令与具体的函数相关,不能确定了。

微软为了hot patch,加了一个mov edi, edi
即函数的开头是如下5个字节。

mov edi, edi
push ebp
mov ebp, esp

一条jmp指令就5个字节,函数开头的5个字节正好放一条jmp,跳转到其它代码里去了。而且这5个字节是固定的,不用考虑哪个函数的问题。因此这套流程的通用性很强。
2011-7-6 11:47
0
雪    币: 107
活跃值: (36)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
楼上正解啊,完全同意
2011-7-6 12:10
0
雪    币: 79
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
学习了...hot patch
2011-7-6 15:30
0
雪    币: 129
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
ls的头像是钱发霉了吗
2011-7-6 15:42
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢 ls的,,学习一下
2011-7-6 15:51
0
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这句也有可能是延迟时间的,反正要结合上下文才能解释出原因。
2011-7-6 16:04
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
我在MFC42.dll中是5个CC,可能是调试版的原因吧
http://blog.csdn.net/jcwkyl/article/details/3598982
2011-7-6 16:33
0
雪    币: 146
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
没什么用的指令
2011-7-6 23:37
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了啊,谢谢
2011-7-7 16:21
0
游客
登录 | 注册 方可回帖
返回
//