第一周(栈溢出)
基本原理:
输入数值过长造成的覆盖。
基本流程:
1.在ida中打开
找到问题(在哪个函数中会发生栈溢出)
python
用gdp调试(pause)
找断点
将返回地址返回目的地址(backdoor)
拿到权限
解决:修改长度:
右键打开assembly
直接修改不能覆盖后面的代码,用mov移动
导出
不同的调用约定cdecl调用规定
函数参数按照从右到左的顺序入栈
支持调用可变参数函数
对C函数的名字修饰约定特点:函数名前加上下划线
stdcall调用约定
主调函数参数从右向左入栈
除指针或者引用类型外用数值传递的方式
C函数,stdcall名称修饰方式是在函数名字前添加下划线,在函数名字后添加@和函数参数的大小
fastcall调用约定
常使用ECX和EDX寄存器传递前两个DWORD(四字节双字)类型或更少字节的函数参数,其余参数按照从右向左的顺序入栈
返回值在EAX中
编译器使用两个@修饰函数名字,后跟十进制数表示的函数参数列表大小(字节数),如@function_name@number
thiscall调用约定naked call 调用约 ...