一些汇编语言相关知识

    本来想写,不过现在越来越说不清自己为什么会写代码和改代码了,不过还是写的还是不太好,许多地方需要改进。继续一些系统低层相关的阅读
前几天看了Reverse Engineering Code with IDA Pro。觉得前面的章节还是有很大帮助,简单提取其中的一些内容写在下面

1.stack and chunk

  

图1

 

一般来说栈有压栈和出栈的操作,当进入某个函数先压入参数,返回地址,保存的EBP地址,这里返回地址为ebp+04h。

其他也相同,函数局部变量按照栈增长方向,栈由高地址向低地址。

 

 push ebp

 mov ebp, esp

 利用esp的偏移来访问各个参数和局部变量,而且栈的分配比较固定,一旦超出大小就直接抛出异常。

 

 

 

当使用类似于malloc的内存函数,会返回一个上图mem位置的指针。同时为了防止内存分配和重分配的开销较大,通常会设立一个cach机制,通常cach会来自前次free的链表中。

 

 

还有一种glibc的自由内存堆分配如上所有,功能返回的指针在mem位置,不过感觉比较少见。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值