栈顶指针esp 栈底指针ebp esp寻址 构建函数 1.使用寄存器传递参数 2.使用堆栈来传递参数 push 1 push 2 push 3 把要用的参数压入堆栈后,需要用call调用函数来计算参数,调用call时,会将call的下一行指令的地址压入栈中,所以使用参数时地址为[esp+4,8,12 ...
分类:
其他好文 时间:
2020-02-21 20:34:56
阅读次数:
84
1、 ,反汇编如下 可以发现进行地址处理的时候都是通过ebp来 间接赋值的 ,不需要去依赖任何的东西,只需要有EBP寄存器作为参照物!在shellcode中利用也起到一部分的作用! 2、 ,反汇编如下 可以明显发现与上面的写法的区别, 是存储在内存地址中的!取值的时候是把本身的地址作为参照物! 3、 ...
分类:
其他好文 时间:
2020-02-21 10:05:16
阅读次数:
77
Canary 参考链接:https://ctf wiki.github.io/ctf wiki/pwn/linux/mitigation/canary zh/ 0x1 简介: 用于防止栈溢出被利用的一种方法,原理是在栈的ebp下面放一个随机数,在函数返回之前会检查这个数有没有被修改,就可以检测是否发 ...
分类:
其他好文 时间:
2020-02-10 17:49:53
阅读次数:
96
一.EBP寻址 ESP:栈顶指针 (程序对与堆栈的使用 使用到哪里,esp就是哪里) ...
分类:
其他好文 时间:
2020-02-09 22:20:11
阅读次数:
60
mov dest, src src:来源 dest:目标 类似 dest=src [地址值] []里面放的一定是地址值 call函数地址 为什么不直接用a的地址,而是ebp 8 全局变量a的地址值是写死的地址 CPU的大小端模式 大部分都是小端模式(00000011先放到内存低地址处) 调试 窗口 ...
分类:
其他好文 时间:
2020-02-04 18:45:22
阅读次数:
83
流浪者 int __thiscall sub_401890(CWnd *this) { struct CString *v1; // ST08_4 CWnd *v2; // eax int v3; // eax int v5[26]; // [esp+4Ch] [ebp-74h] int i; // ...
分类:
其他好文 时间:
2020-01-26 19:23:04
阅读次数:
355
get_shell 学会第一步nc CGfbs IDA反汇编得到伪代码: int __cdecl main(int argc, const char **argv, const char **envp) { int v4; // [esp-82h] [ebp-82h] int v5; // [esp ...
分类:
其他好文 时间:
2020-01-24 17:20:56
阅读次数:
222
Mysterious BUUCTF-2019 int __stdcall sub_401090(HWND hWnd, int a2, int a3, int a4) { char v5; // [esp+50h] [ebp-310h] CHAR Text[4]; // [esp+154h] [ebp ...
分类:
其他好文 时间:
2020-01-23 15:30:54
阅读次数:
332
CALL和JMP的区别 CALL会把调用处的下一个指令的地址压栈,而JMP不会 函数的调用过程 //funciton add(a,b){return a+b}?push第一个参数入栈push第二个参数入栈?call调用的返回地址压栈?跳转准备?push ebp //保存当前栈底?mov ebp,es ...
分类:
其他好文 时间:
2020-01-16 00:58:49
阅读次数:
97
调用check函数前先把004010F1(call下一条要执行的地址)压入堆栈中,当前的ESP为0012FF30,EBP为0012FF80,check函数的地址为00401005。F11单步跟进函数。 因为压入了call下一步的返回地址,所以ESP减4变为0012FF2C,到下面的push原ebp到 ...
分类:
其他好文 时间:
2020-01-11 23:55:32
阅读次数:
163