首页
社区
课程
招聘
[旧帖] [求助]这个call $+5 语句是什么意思? 0.00雪花
发表于: 2007-5-14 10:16 7057

[旧帖] [求助]这个call $+5 语句是什么意思? 0.00雪花

2007-5-14 10:16
7057
0804830B  call $+5
08048310  pop ebx
这个call语句我看不懂,编译器为什么要这样编译?用一个JMP 不行吗?或者直接删掉我觉得也可以

上下文:
call_gmon_start proc near
      push ebp
      mov  ebp, esp
      push ebx
      sub    esp, 4
      call    $+5                      //0804830B
      pop    ebx                     //08048310
      add    ebx,12D8h
      mov   edx,[ebx-4]
      test     edx,edx
      jz        short loc_8048326
      call    __gmon_start__
loc_8048326:
...

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这是一个重定位的方法,一般还有一句.
call $+5
就是说调用下一个语句。5是本条语句的长度。
2007-5-14 12:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我还是不懂,用JMP不行吗?还不用对IP压栈.那样不是更快?
2007-5-14 14:55
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
想起了学生时代初学病毒也是对这个很疑惑。。。。

call    $+5                      //0804830B
pop    ebx                     //08048310
add    ebx,12D8h

call的时候返回地址压栈,下一句把栈里头的地址取到ebx了,后面可能用到的。
其实就是确定当前绝对地址
2007-5-14 15:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这么说配合着前面一句 sub esp 4 就是相当于 ebx 存放的是 刚才的eip  (相当于 mov ebx,eip--如果可以这样写的话)   5是call语句的长度,我应该是明白了
谢谢GoogleDX,谢谢viewer
2007-5-14 15:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
就是需要它压栈,这样pop出来的是call语句的下一条指令地址。
用途在于定位这一段代码在内存中的位置。这是加壳和病毒技术常用的手段。病毒当中著名的delta函数就是这个了。。。。
2007-5-14 17:25
0
游客
登录 | 注册 方可回帖
返回