【系统】看MOOC学习2

指令跳转

call

jmp【无条件跳转】

(cmp)jl【条件跳转】:

jl        jg

jb        ja

栈调用

ret

相对转移地址,pc的值存放在eip寄存器中。

        指令的执行顺序并不是一定按照在存储器中放的顺序

有一个约定——eax ecx edx 由调用者保存【P】

                         ebx esi edi 由被调用者保存【Q】

P调用Q:进入Q的准备阶段,把Q的ebp内容压入栈中【把P的“栈底指针”保存下来】

从Q返回P,call指令的下一条:改esp、回收栈空间。

 这条ADD指令【esp指针上移】:回收了空间

        任务:

                1、swap怎么做的;

3分16秒。运行hack.c前的一些配置

        【】:sudo、需要恢复

 :::还有哪些库函数会带来缓冲区溢出漏洞。。

【我自己实践】

终于从main函数转到另一个函数了。esp的值赋给ebp

sum就是“另一个函数”

push %ebp时,esp指针继续下移...

【保存ebp有必要,esp当栈回收时,esp自然而然后退、没有问题!】

你定义了,是分配了空间,but内存当中的数确实“野值”

                                                "野值"

“正儿八经”计算出来的。似乎大了一些???

        毕竟上面那个13xw的也有0x56555619 

 leave【非常厉害】、ebp旧值弹出、回到原来的栈帧结构。

ret【】弹出返回地址(反汇编文档中左边一列“地址”)

【看栈帧】从sum函数ret回来后,esp+8上移,参数被回收空间。

int sum(int a[],int n)先给n传参,再左边——从左到右

        【?】printf后续没有尽头吗???

mov    $0x1,%ecx

        这个到底是相对地址吗?还是数值1、16进制的

【缓冲区】

gcc -o0 -m32 -g -fno-stack-protector -z execstack -no-pie -fno-pic ......

 

        好复杂,()有啥用 

【些些课设】

try2.txt是破坏了内存 

        破坏了返回地址等一系列重要信息,导致在运行时发生了内存的访问错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值