VC++下C++逆向基础

    • 局部变量
    1. EBP-8,EBP-C...
    2. Debug : PUSH EBP MOV EBP,ESP
    3. RELEASE : ESP+XX
    • 参数
    1. EBP+8,EBP+C
    2. PUSH EBP MOV EBP,ESP
    • 调用方式
    1. _stdcall 函数内平衡堆栈,有一个参数ret 4,两个ret 8
    2. _cdcel函数外平衡堆栈,有一个参数retn,函数外add esp,4;有两个参数retn, 函数外add esp,8
    3. this函数内平衡堆栈,有一个参数ret 4,两个参数ret 8,ecx传递this指针
    4. eax常用于返回值,ecx一般用作this指针或计数

    • C++类代码的特点
    1. 寄存器ECX传参时一般用作this指针,即对象指针
    2. 有ECX传参的CALL,是成员函数,构造函数,析构函数
    3. 能访问成员变量的函数都会有ECX传参
    4. 静态函数,全局函数无ECX(THIS)
    • 类构造
    1. 函数内初始化成员变量
    2. 返回值汇编中EAX是对象地址,即this指针
    3. 全局对象的构造在C运行库_initterm中调用


    识别法:
    1. 查看汇编代码,参数是否用到ECX
    2. 函数内,是否有操作ECX指向的内存(未初始化的内存)
    3. 返回值是ECX(THIS)
    成员函数
    1. 函数传参,传递ECX
    2. 函数中,有对ECX指向内存的访问,已初始化
    3. 返回ECX指向的内容



  析构函数
  1. 汇编循环后调用析构
  2. 函数返回前调用析构
  3. 全局对象在C库函数exit中循环调用所有全局对象的析构


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值