zoukankan      html  css  js  c++  java
  • 汇编和可执行文件2

    栈不需要清空  可以反复的使用(数组)

    栈是通过push 进行操作的  first in last out 先进后出

    栈不仅仅是存储临时变量 他还存储跳转后返回地址(程序中每次都调用函数的时候存储)

    API相当于函数

    程序是顺序执行的  一开始会根据程序计数器一步一步执行

    esp表示当前的栈顶   ebp表示栈底  call移动将esp往上走 ebp走到栈顶

    栈进行回溯 来存放我们需要记录的一些东西 

    栈可以传递一些参数用来记录返回地址,记录参数。

    栈还是这个栈  

    汇编代码:

    1,赋值语句

    2,跳转

    3,计算语句

    为什么ebp要上移

    ebp~esp一个函数的栈

    因为必须栈底是什么  每个函数都有零时变量 移动用来清理栈底变量

    push的意思是压栈

    pop的意思是出栈

    破解最主要的是标志寄存器

    标志寄存器加程序计数器来决定程序的进行流程

    把标志寄存器拿掉破解很方便

    寄存器

    EBP栈底  ESP栈顶 EIP程序计数器  EFL标志计数器 EAX累加寄存器 EDI圆寄存器 ESI是机子寄存器 (通用寄存器)

    内存

    发生一个push就开始进栈

    push ebs

    mov ebp,esp//栈底发生改变 要复原栈底

    pop出栈在栈中取东西 

    add增加一个地址

    sub  esp,0D8h 开始进栈的时候给他一个空间

    代码

    堆  指针 自己释放 不释放会出现内存泄漏

    常量

    vs2015可以看反汇编 内存编码

  • 相关阅读:
    minimum-path-sum
    pascals-triangle
    Java -- 二分查找
    redis缓存雪崩,击穿,穿透(copy)
    使用redis限制提交次数
    数据库的悲观锁和乐观锁
    mysql常用命令
    php压缩Zip文件和文件打包下载
    php去除数据库的数据空格
    php获取本年、本月、本周时间戳和日期格式的实例代码(分析)
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/10555324.html
Copyright © 2011-2022 走看看