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

2018-11-11  本文已影响0人  鸡龙

一、遇到问题和解决方法

1.make无法安装:

  https://blog.csdn.net/u014723529/article/details/40404391

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

https://blog.csdn.net/qq_37367124/article/details/79475069

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源更新问题:

https://blog.csdn.net/qq_27366789/article/details/80559074

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

https://blog.csdn.net/accumulate_zhang/article/details/80269313

6.GCC编译程序:

https://zhidao.baidu.com/question/2202210069320880548.html

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

http://www.cnblogs.com/studyskill/p/7849775.html

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

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

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

https://www.cnblogs.com/mliudong/p/4086797.html

二、工具安装与学习

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

https://www.jianshu.com/p/355e4badab50


2.IDA

https://blog.csdn.net/re_psyche/article/details/78797689

https://www.cnblogs.com/DismalSnail/p/8743466.html

3.gdb安装相关:

gef插件安装:https://blog.csdn.net/gatieme/article/details/63254211?utm_source=blogxgwz3

setvbuf全缓冲,行缓冲,不带缓冲:https://www.cnblogs.com/DismalSnail/p/8743466.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的函数调用实现

上一篇 下一篇

猜你喜欢

热点阅读