int a[100];cout << a; int a[10000];cout << b; 上面两种情况分别记为①和②。 经常会遇到①的输出不全为0,而②全为0的情况。 推测原因:开辟数组长度不够大时,esp的mov长度不够大,a数组占据了使用完毕但未清零的栈帧。 ...
分类:
编程语言 时间:
2020-05-25 22:23:55
阅读次数:
73
函数的约定: 对函数调用时如何传递参数的一种约定,我们知道调用函数前需要将参数压入栈然后再传递给函数,栈就是定义在进程中的一段内存,向下扩展,大小记录在PE头中,运行时确定栈的大小 函数执行完毕后,ESP的值如何变化? ESP的值恢复到函数调用之前,这样可引用的栈大小不会缩减 函数: 1 int f ...
分类:
其他好文 时间:
2020-05-19 00:47:36
阅读次数:
60
涉及到以下汇编指令: pushl: 入栈 ebp指向栈底 esp指向栈顶 入栈时只需要将esp下移, 将入栈的值放入esp指向的地址,如下图所示: popl: 出栈 先将栈顶的数据保存,再将esp上移 call:顾名思义,调用一个函数 调用一个函数需要将当前执行到的指令位置(eip寄存器的值)保存, ...
分类:
其他好文 时间:
2020-05-07 00:26:08
阅读次数:
72
想起好久以前写的代码,留个记录。https://github.com/junhuanchen/esp idf software serial 若是串口不够用的,加上它就有一堆串口了,但 K210 好像有三个串口,应该不太需要了吧? 再说吧~ ...
分类:
编程语言 时间:
2020-05-02 00:26:07
阅读次数:
170
栈迁移 当我们的rop链过长时很可能栈空间不够,并且ebp之前的空间其实只是填充一些没什么用的数据 栈迁移机理 与传统的pop_ret类似,利用level_ret实现栈的迁移,都是寻找很小短的零碎代码,进行拼接,和拼积木很像。 level ret//拆解 mov ebp,esp//esp跟着ebp走 ...
分类:
其他好文 时间:
2020-04-30 13:27:11
阅读次数:
109
转自:https://durant35.github.io/2017/10/29/VM_Stacks/ Linux 中有几种栈?各种栈的内存位置? 关于栈 函数调用栈的典型内存布局 栈帧 (Stack Frame) 的边界由栈帧基地址指针 EBP 和 栈指针 ESP 界定,EBP指向当前栈帧底部 ( ...
分类:
编程语言 时间:
2020-04-27 19:49:37
阅读次数:
86
1. INT3断点常用的F2下断点为该断点,这种下断方式会改变机器码为0xCC,当程序执行到此时停止。但是这种方法会被检测,如在某API下断,程序在执行该API前有检测代码,检测是否为0xCC,如果检测到则直接退出。在API的前几行下断可以进行绕过 2. 硬件断点常见于ESP脱壳定律,ESP脱壳定律 ...
分类:
其他好文 时间:
2020-04-04 19:04:27
阅读次数:
100
场景: 在写ESP8266 web服务的时候,免不了要将自己设计的网页html和css等文件放入到固件中。在arduino中有fs可以进行上传文件,然后通过文件系统读出。那在ESP-IDF中该怎么办呢。有几个思路 1. 通过flash_download_tools 直接向固定地址写入文件。然后在代码 ...
分类:
Web程序 时间:
2020-04-02 01:23:25
阅读次数:
141
栈顶指针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
http://www.51hei.com/bbs/dpj 150034 1.html 说明FLASH SIZE这一栏如果是ESP 01就选8Mbit,如果是ESP 12F就选32Mbit 安装环境 下载 安装 注意要使用英文目录(注意这里是0.5版本,不是最新的版本,新版本未测试) 安装完成后打开安 ...
分类:
其他好文 时间:
2020-02-19 17:16:14
阅读次数:
210