加密与解密 笔记

2018-11-03  本文已影响0人  CMPEAX

64位软件逆向技术

寄存器

64位通用寄存器的名称第一个字母从'E'改为'R',大小扩展到64位,数量增加了8个(R8~R15),扩充了8个128位的XMM寄存器。

函数

  1. 函数调用约定

函数的四个参数虽然使用寄存器来传递,但是栈仍然为这4个参数预留了空间(32字节)。
且函数执行体内一般将参数值填充进预留栈空间内并进行数据填充。
参数使用的栈空间由函数调用者负责平衡。

64位环境下,使用RAX寄存器来保存函数返回值。(返回值类型由浮点类型使用MMX0寄存器返回)。

结构体

数据结构

  1. 局部变量
    预留栈空间在低地址,局部变量空间在高地址。

  2. 全局变量
    先定义的在低地址,后定义的在高地址。

  3. 数组
    数组从低地址到高地址进行顺序排列的。
    数组占用大小 : sizeof(类型) * 个数
    寻址公式数组元素的地址 = 数组首地址 + sizeof(数组类型) * 下标
    多维数组也可以看成一个一维数组。
    二维寻址公式数组元素地址 = 数组首地址 + sizeof(一维数组类型)*下标1+sizeof(数组类型)*下标2

    访问二维数组特征:

    • [数组首地址 + n]
    • [数组收地址 + 寄存器 * n]

控制语句

上一篇下一篇

猜你喜欢

热点阅读