ubuntu遇到的问题与栈溢出学习

编程入门 行业动态 更新时间:2024-10-20 03:31:05

<a href=https://www.elefans.com/category/jswz/34/1771209.html style=ubuntu遇到的问题与栈溢出学习"/>

ubuntu遇到的问题与栈溢出学习

一、遇到问题和解决方法

1.make无法安装:

 


2.安装软件包时遇到签名无效,明文签署文件不可用等问题,进行源更新:


3.make 出现pip8.1.1 requires SSL/TLS:

安装openssl-devel

yum install opensll-devel

apt-get install libssl-dev

apt-get install openssl


4.安装pip3源更新问题:


5.更新pip3却显示异常,出现ImportError: cannot import name main:


6.GCC编译程序:

.html


7.关闭ASLR时,出现权限不够问题:

.html


8.GCC生成关闭ASLR关闭PIE并不生成cnanary命令:

gcc -fno-stack-protector -o newfile file -no-pie


8.64位编译32位打开多架构支持:

.html



二、工具安装与学习

1.pwntools安装,与模块介绍:


2.IDA

.html


3.gdb安装相关:

gef插件安装:=blogxgwz3

setvbuf全缓冲,行缓冲,不带缓冲:.html


三、栈学习

1.区分寄存器:

%eax、%edx和%ecx为主调函数保存寄存器

%ebx、%esi和%edi为被调函数保存寄存器

ESP(Stack Pointer)是堆栈指针寄存器,存放执行函数对应栈帧的栈顶地址(也是系统栈的顶部),且始终指向栈顶;

EBP(Base Pointer)是栈帧基址指针寄存器,存放执行函数对应栈帧的栈底地址,用于C运行库访问栈中的局部变量和参数。

EIP(Instruction Pointer)是指令寄存器,指向处理器下条等待执行的指令地址(代码段内的偏移量),每次执行完相应汇编指令EIP值就会增加。



2.理解栈在函数调用时的变化过程:


3.指令

add esp,xxx 降低栈顶,回收当前的栈帧

pop ebp 将上一个栈帧底部位置恢复到ebp

retn 这条指令有两个功能 a)弹出当前栈顶元素,即弹出栈帧中的返回地址至此,栈帧恢复工作完成 b)让处理器跳转到弹出的返回地址,恢复调用前的代码区

区分 mov %esp,%ebp与 mov %ebp,%esp

前者为开辟新栈帧,后者为释放栈空间


4.main中调用func_A,func_A中再调用func_B的函数调用实现


更多推荐

ubuntu遇到的问题与栈溢出学习

本文发布于:2024-03-11 14:36:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729191.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ubuntu

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!