一、遇到问题和解决方法
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的函数调用实现
网友评论