c&c++反汇编与逆向分析学习笔记(9)--自增和自减

自增和自减分为两种:
    1>自增自减运算符在语句块之后,先执行语句块,再执行自增自减
    2>自增自减运算符在语句块之前,先执行自增自减,再执行语句块
通常,自增和自减是被拆分成两条汇编指令执行的。
    //C++源代码
    int nVarOne = argc;
    int nVarTwo = argc;

    //变量后缀自增参与表达式运算
    nVarTwo = 5 + (nVarOne++);
    //变量前缀自增参与表达式运算
    nVarTwo = 5 + (++nVarOne);

    //具体对比讲解
    //C++
    nVarTwo = 5 + (nVarOne++);
    //反汇编
    mov edx,dword ptr [ebp-4]  //取出变量nVarOne,保存在edx中
    add edx,5           //对edx执行加5
    mov dword ptr [ebp-8],edx  //把edx赋值给变量nVarTwo
    mov eax,dword ptr [ebp-4]  //取出变量nVarOne,保存在eax中
    add eax,1           //执行eax加等于1
    mov dword ptr [ebp-4],eax  //把eax值赋值给变量nVarOne
    
    //C++
    nVarTwo = 5 + (++nVarOne);
    //反汇编
    mov ecx,dword ptr [ebp-4]  //取出变量nVarOne,保存在ecx中
    add ecx,1                  //执行ecx加等于1
    mov dword ptr [ebp-4],ecx  //把ecx值赋值给变量nVarOne
    mov edx,dword ptr [ebp-4]  //取出变量nVarOne,保存在edx中
    add edx,5                  //对edx执行加5
    mov dword ptr [ebp-8],edx  //把edx赋值给变量nVarTwo

    自减同自增相同,只是add变成sub
    


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值