《C++反汇编与逆向分析技术揭秘》——函数的工作原理

时间:2022-01-08 08:58:16
  • 各种调用方式的考察

示例:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

cdecl方式是调用者清空堆栈:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

如果执行的是fastcall:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

借助两个寄存器传递参数:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

参数1和2借助局部变量来存储:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

  • 返回值

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

如果返回值是结构体:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

返回值存放在eax和edx两个寄存器中:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

返回之后再存放eax和edx到对应的局部变量中:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

如果这个结构体中存放的值太多:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

调用函数时压入了一个结构体的地址:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理

子函数中设置完对应的成员的值之后,再返回这个地址:

《C++反汇编与逆向分析技术揭秘》——函数的工作原理