美文网首页C语言
c语言if语句逆向分析

c语言if语句逆向分析

作者: 旧风景_ | 来源:发表于2017-05-31 22:37 被阅读0次

来分析一下c语言if语句
直接上代码

#include<stdio.h>
int main()
{
    int j = 5;
    int k = 6;
    if (j > k)
    {
        printf("j>k");
    }

    return 0;
}

下面是对应的汇编代码,汇编代码是从vs2013上面复制的

00AC307E  mov         dword ptr [ebp-8],5  
00AC3085  mov         dword ptr [ebp-14h],6  
00AC308C  mov         eax,dword ptr [ebp-8]  
00AC308F  cmp         eax,dword ptr [ebp-14h]  
00AC3092  jle         00AC30AB  

00AC3094  mov         esi,esp  
00AC3096  push        0AC7878h  
00AC309B  call        dword ptr ds:[00ACB030h]  
00AC30A1  add         esp,4  
00AC30A4  cmp         esi,esp  
00AC30A6  call        00AC1163  

00AC30AB  xor         eax,eax  

先来分析一下变量j和变量k:
由于变量j和变量k是局部变量所以编译器是不给它们分配地址的
而是把它们的值存到临时申请栈空间里.栈嘛 函数调用完了就会释放掉的

看 5 和 6 一看 就知道是变量j 和变量 k的值 所以我们知道:
00AC307E mov dword ptr [ebp-8],5 //ebp-8就是存放变量j的值
00AC3085 mov dword ptr [ebp-14h],6 //ebp-14h存放变量k的值

00AC308C mov eax,dword ptr [ebp-8] //把变量j放入eax中
00AC308F cmp eax,dword ptr [ebp-14h] //比较变量j和变量k的大小
00AC3092 jle 00AC30AB //如果j小于等于k则不执行方括号内的代码
如果这条代码的条件成立则跳到xor eax,eax 这条代码执行

否则
就执行方括号里面的代码
这段汇编函数关系不大 所以跳过
00AC3094 mov esi,esp
00AC3096 push 0AC7878h
00AC309B call dword ptr ds:[00ACB030h]
00AC30A1 add esp,4
00AC30A4 cmp esi,esp
00AC30A6 call 00AC1163

相关文章

  • c语言if语句逆向分析

    来分析一下c语言if语句直接上代码 下面是对应的汇编代码,汇编代码是从vs2013上面复制的 先来分析一下变量j和...

  • C语言-循环语句 选择语句

    今天学习了C语言的循环语句,C语言中循环语句有for, while ,do while ,语句。 条件语句if ...

  • rust语句1

    常用的语言,表达式语句是语言的组成部分,rust也是一样的。 if语句 和C语言并无区别 循环语句 c、c++中的...

  • iOS学习第三天2015.12.30

    今天,学习了软件开发语言的基础C语言的循环语句. 在C语言中,循环语句有三大类: while语句,do..whil...

  • c语言控制语句

    C语言9种控制语句 ①if( )~else 条件语句 ②for( )~ 循环语句 ③while( )~ 循环语句 ...

  • 雨点的成长2

    C语言循环语句 switch语句 格式: switch(标识符){ case a:...;break; c...

  • iOS开发 -- C语言基础4(基本语句和运算符)

    iOS开发 -- C语言基础4(基本语句和运算符) 基本语句 C语言的基本语句跟Java中的差不多,所以,这里只是...

  • c语言逆向分析之函数1

    从汇编的角度去理解函数会让你更加的深刻。。。。。。 看这篇文章需要一定的c语言基础和汇编基础(能基本看懂简单的汇编...

  • 第6章 循环

    英文原版:P99 在第5章里,我们介绍了C语言的选择语句:if语句和switch语句。 本章我们介绍C语言的循环语...

  • WarMj:DCL、DDL、DML三种数据库语言的概述及区分方式

    |语言|概述|语句||:-------|:--------|:------|:------||DCL(Data C...

网友评论

    本文标题:c语言if语句逆向分析

    本文链接:https://www.haomeiwen.com/subject/plnjfxtx.html