首页
社区
课程
招聘
[旧帖] [求助]这个mov是什么意思 0.00雪花
发表于: 2013-6-12 22:19 1956

[旧帖] [求助]这个mov是什么意思 0.00雪花

2013-6-12 22:19
1956
最近刚刚开始接触逆向

在看ntdll,发现有些API开始都是
7C960F98    8BFF            MOV EDI,EDI
7C960F9A    55              PUSH EBP
7C960F9B    8BEC            MOV EBP,ESP
这样MOV EDI,EDI有什么意思?谢谢

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 817
活跃值: (2063)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
函数的入口地址应该是

7C960F9A    55              PUSH EBP

至于

7C960F98    8BFF            MOV EDI,EDI

通常应该是不会执行的代码
2013-6-12 22:48
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
据说是为了方便升级用的。这种形式入口附带应该还有五个nop。用来做段跳其实是挺不错的。段跳hook不用直接恢复代码,方便,
2013-6-13 01:34
0
雪    币: 659
活跃值: (484)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
对齐用的,相当于2个nop
2013-6-13 13:00
0
雪    币: 3
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mov edi,edi  就是把edi中的值放到edi中 不过这没有什么意义
2013-6-13 17:10
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
“它实际上只是被编译器当做占位符放在这里的一条空代码以防有人想捕获这个函数。这里所说的“捕获”是指:某些外部组件增加一条JMP,只要被捕获函数被调用就将这个JMP用作通知信号。通过在每个函数的开头位置放一条这样的占位指令,MS实际上是为NTDLL中所有的捕获韩式设置一个统一的记号。”

在书上看到这个,逆向工程揭秘,不过还是不太清楚
2013-6-13 23:43
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
7
.........
2013-6-14 00:05
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
个人认为,书上说的是狗屁, 4楼是正解。

因为经常使用asm做开发,所以也时常碰到自己的代码中出现mov edi,edi

测试环境masm
测试方式如下:
在.code代码段中
定义一个字节,然后 align 4  ,继续写其余代码,会生成 8D 49 00 (lea ecx,[ecx] 直接写这句汇编是2字节8D 09,但那3个字节的也是这句汇编)   补齐3个字节
定义两个字节,然后 align 4  ,继续写其余代码,会生成 mov edi,edi     补齐2个字节
定义三个字节,然后 align 4  ,继续写其余代码,会生成 nop                 补齐1个字节

综上,作用是代码对齐。
2013-6-14 15:31
0
雪    币: 1234
活跃值: (282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感觉8楼的才是正解,8楼的实战经验摆在那里。
2013-6-14 18:25
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好吧感觉各位大大说的都很有道理多谢各位了
2013-6-14 19:01
0
游客
登录 | 注册 方可回帖
返回
//