首页
社区
课程
招聘
请教这样的代码是什么意思
发表于: 2013-9-7 20:49 7192

请教这样的代码是什么意思

2013-9-7 20:49
7192
本人菜鸟,经常看到有类似
push 0040b490

这样的反汇编代码。不明白这句代码中,后面的那个"0040b490"究竟是什么意思。它在这里是代表一个立即数,还是代表一个内存地址?就是说,整个这句代码的意思,是将0040b490这个数压入堆栈,还是将0040b490所指的内存单元的内容压入堆栈?
烦请大家多多指教,先谢为敬!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1
活跃值: (1174)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是把0040b490这个数压栈,至于代表什么,什么都可能,跟代码上下文相关,比如是个字符串指针
2013-9-7 21:19
0
雪    币: 433
活跃值: (1895)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
如果是壳的情况下 应该(大部分情况下)是返回地址 当然了..哪有返回地址这么短的
2013-9-7 23:18
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
函数入口常用的压栈
2013-9-10 11:47
0
雪    币: 205
活跃值: (155)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
它在这里是代表一个立即数,还是代表一个内存地址?就是说,整个这句代码的意思,是将0040b490这个数压入堆栈,还是将0040b490所指的内存单元的内容压入堆栈?
首先,这个代表立即数,如果是地址是:[0040b490]
其次,是将此立即数压入栈中

建议楼主先去补充一下汇编知识。
2013-9-10 14:44
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
立即数!
2013-9-10 15:06
0
雪    币: 70
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个是立即数,是一个常量,比如有的时候会有参数进栈:
push 0
push 0x34534
通常情况下,如果是地址,应该先保存在寄存器里,然后才进栈。如:
lea eax,dword ptr [0x12345678]
push eax
call function......
add esp,0x.....
2013-9-10 15:16
0
雪    币: 170
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是立即数,地址要用[]括起来
2013-9-10 20:06
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很明显是立即数压栈,推荐楼主看一下汇编的子函数调用与返回,这里会对调用过程的参数传递等方式进行详细说明。
2013-9-10 20:26
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
是立即数
2013-9-17 09:07
0
游客
登录 | 注册 方可回帖
返回
//