首页
社区
课程
招聘
[旧帖] [求助]关于call 0.00雪花
发表于: 2012-2-9 14:57 1519

[旧帖] [求助]关于call 0.00雪花

2012-2-9 14:57
1519
各位帮我澄清一下概念把 :-)
call一定有ret语句对应吗
如果call的不是主程序内部代码地址,一定有返回么,返回的是call的位置么

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不一定有ret

call的行为很简单,它把eip的值压栈,然后跳到另一处执行。

尽管它平时常常用于高级语言的函数调用,但你可以利用它的行为做其他的事情

不带立即数的ret的行为也很简单,它从栈上弹出4字节的值,并把eip的值设置为弹出的值

尽管它常常用来实现高级语言的函数返回,但你可以用它的行为做其他的事情

执行流在执行了call指令后再也没返回的情况常见于某些操作系统的启动代码
2012-2-9 15:20
0
雪    币: 11
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CALL=PUSH xxxxxxxxx  + JMP +
有call 不一定有ret  比如壳对代码混淆。让jmp变成call
返回值是call的下一条语句。
2012-2-9 15:21
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
O(∩_∩)O谢谢
我一直以为如果call的是主程序代码段内的 就不一定有返回
如果是其它程序就一定要返回 这么说来 就是一个简单的压栈和跳转了
看来我如果追代码的话问题就越来越麻烦了
2012-2-9 15:41
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
”其他程序“是指什么。。

如果是指dll的话,其实常有这么做的

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683153(v=vs.85).aspx

FreeLibraryAndExitThread 函数就是专门给那些不想返回的函数用的。。
2012-2-9 16:24
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=bombless;1043611]”其他程序“是指什么。。

如果是指dll的话,其实常有这么做的

就是dll
2012-2-9 16:31
0
雪    币: 153
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
学习了,还有壳这么搞的啊,下次我得注意下,嘿嘿。
2012-2-9 19:21
0
游客
登录 | 注册 方可回帖
返回
//