首页
社区
课程
招聘
[求助]请教各位一段汇编程序
发表于: 2008-11-25 21:52 5081

[求助]请教各位一段汇编程序

2008-11-25 21:52
5081
汇编程序如下

80483e8:          ff 35 6c 97 04 08            pushl  0x804976c
80483ee:        ff 25 70 97 04 08            jmp    *0x8049770
80483f4:                        00 00                        add    %al,(%eax)
80483f6:                       00 00                        add    %al,(%eax)
80483f8:                       ff 25 74 97 04 08            jmp    *0x8049774
80483fe:                       68 00 00 00 00               push   $0x0
8048403:        e9 e0 ff ff ff               jmp    80483e8
8048408:        ff 25 78 97 04 08            jmp    *0x8049778
804840e:        68 08 00 00 00               push   $0x8
8048413:        e9 d0 ff ff ff               jmp    80483e8
8048418:        ff 25 7c 97 04 08            jmp    *0x804977c
804841e:        68 10 00 00 00               push   $0x10
8048423:        e9 c0 ff ff ff               jmp    80483e8
8048428:        ff 25 80 97 04 08            jmp    *0x8049780
804842e:        68 18 00 00 00               push   $0x18
8048433:        e9 b0 ff ff ff               jmp    80483e8
8048438:        ff 25 84 97 04 08            jmp    *0x8049784
804843e:        68 20 00 00 00               push   $0x20
8048443:        e9 a0 ff ff ff               jmp    80483e8

在下列地址处的语句如下

8048403:          e9 e0 ff ff ff               jmp    80483e8

8048413:        e9 d0 ff ff ff               jmp    80483e8

8048423:        e9 c0 ff ff ff               jmp    80483e8

8048433:        e9 b0 ff ff ff               jmp    80483e8

8048443:        e9 a0 ff ff ff               jmp    80483e8

问题:
其实这5句都是要跳转到地址   80483e8 处

用的是jmp  :E9 (1110 1001)这条命令  在一个segment内的跳转
问题:
1)e9后面的地址  怎样计算的?
2)为啥跳到同一地址 e9后面跟的立即数是不同的5个数字啊?

谢谢.

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
0.在执行当前指令时EIP指向下条指令。

1.0xe9后面是4个字节(不是5个)的偏移量,是目的地址相对于EIP的差值,为有符号数。

2.如果在-128~+127范围之内跳转,使用short jmp指令(0xeb)更好,其后跟一个字节的偏移量。
2008-11-25 22:21
0
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
是偏移量,前面的地址每次差10,后面的偏移量也是每次差10的
2008-11-25 23:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢二位,明白了. 基础不牢啊,我是去差当前了,没有差EIP,惭愧.

按理说应该是EB,但是我看很多编译器在这里都编译成E9,不知道为啥
2008-11-26 09:00
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
5
EB
E9
EA
FF
都是jmp的的机器指令.....
具体什么时候用哪个指令的你可以看看 Intel80x86 OPCODE 文档.
2008-11-26 14:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢大侠的指点
2008-11-26 16:47
0
游客
登录 | 注册 方可回帖
返回
//