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遇到的问题与栈溢出学习
发布评论