1.if语句的反汇编判断
if语句反汇编后的标志:
    执行各类影响标志位的指令        
    jxx xxxx
如果遇到上面的指令,则很可能是if语句;
 
例如:
    1、案例一                                
    mov         eax,dword ptr [ebp+8]                    分析:cmp指令 影响标志位            
    cmp         eax,dword ptr [ebp+0Ch]                    jle :小于或者等于就跳转到00401059            
    jle         00401059                                
                                    
    2、案例二                                
    mov         eax,dword ptr [ebp+8]                    分析:cmp指令 影响标志位            
    cmp         eax,dword ptr [ebp+0Ch]                    jl  :小于则跳转            
    jl          00401059                                
                                    
    3、案例三                                
    mov         eax,dword ptr [ebp+8]                    jge :大于或者等于则跳转            
    cmp         eax,dword ptr [ebp+0Ch]                                
    jge         00401059                                
                                    
    4、案例四                                
    mov         eax,dword ptr [ebp+8]                    jg :大于则跳转            
    cmp         eax,dword ptr [ebp+0Ch]                                
    jg          00401059    
 
函数反汇编分析实例:
 
2.if...else语句的反汇编判断
反汇编标志性语句:
IF_BEGIN:                                           
    先执行各类影响标志位的指令                                        
    jxx ELSE_BEGIN                                      
    ......                                        
IF_END:                                        
    jmp END                                        
    ELSE_BEGIN:                                      
    ......                                        
    ELSE_END:                                    
END:    
 
特点分析: 
    1、如果不跳转,那么会执行到jmp处,jmp直接跳转到END处                        
    2、如果跳转,则会直接跳过jmp END处的代码,直接执行后面的代码   
 
总结: 
    跳转执行一部分代码,不跳转执行另外一部分代码     
    第一个jxx跳转的地址前面有一个jmp ,可以判断是if...else...语句  
 
例如:
 
3.IF...ELSE IF...ELSE IF..多分支语句的反汇编判断               
    IF_BEGIN:                
        影响标志位的指令            
        jxx ELSE_IF_BEGIN            
        ......            
    IF_END:                
        jmp END            
    ELSE_IF_BEGIN:                
        影响标志位的指令            
        jxx ELSE_BEGIN            
        ......            
    ELSE_IF_END:                
        jmp END            
    ELSE_BEGIN:                
        ......            
                    
    ELSE_END:                
    END:                
        ......       
 
分析:                
    1、当每个条件跳转指令要跳转的地址前面都有jmp 指令                
    2、这些jmp指令跳转的地址都是一样的                
    3、如果某个分支没有条件判断,则为else部分
 
4.函数内部功能分析
函数反汇编代码:
 
1、分析参数    
a=[ebp+8],b=[ebp+10],c=[ebp+c];
 
2、分析局部变量    
x=0,y=1,z=2;   
 
3、分析全局变量  
没看到直接寻址所以没有全局变量;
    
4、功能分析  
if(a<=c){
}else if(c>=b){
} else if(a>b){
}else{} 
    
5、返回值分析 
返回x+1   
    
6、还原成C函数    
if(a<=c){
    x=y-1;
}else if(c>=b){
    x=z+1;
} else if(a>b){
    x=y+z;
}else{
    x=y+z-1;
}
return x+1;
 
 
 
 

if语句分析的更多相关文章

  1. tsql语句分析工具 转

    一款好用且免费的语句分析工具 在调优过程中的查询语句优化阶段,分析语句的执行计划是必经之路,一款好的执行计划分析工具确实可以帮助我们事半功倍 一款名为“Plan Explorer“,自己用的挺爽,不私 ...

  2. sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取

    原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 在多人开发中最头疼的是人少事多没有时间进行codereview,本来功能都没时间写,哪有时间来开会细细来分析代码.软件能跑就行, ...

  3. MongoDB分析工具之一:explain()语句分析工具

    explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mongo ...

  4. Lucene中Analyzer语句分析

    Lucene中Analyzer语句分析,利用lucene中自带的词法分析工具Analyzer,进行对句子的分析. 源代码如下: package com.test; import java.io.IOE ...

  5. 一款好用且免费的语句分析工具Plan Explorer

    在调优过程中的查询语句优化阶段,分析语句的执行计划是必经之路,一款好的执行计划分析工具确实可以帮助我们事半功倍 小贴士:Plan Explorer是将Plan Explorer 专业版与免费版整合在一 ...

  6. mysql语句分析

    explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1,id   select识别符.这是select的查询序列号.2,select_type 可以为一下任何一种类型simple ...

  7. SQL删除重复行和查询所有大于某成绩的语句分析

    有这样一个题,用一条SQL语句 查询出每门课都大于80分的学生姓名. 下面是表 分析,查询每门课程都大于80的学生.SELECT DISTINCT name FROM dbo.student WHER ...

  8. python通过一个语句分析几个常用函数和概念

    前言 过年也没完全闲着,每天用一点点时间学点东西,本文为大家介绍几个python操作的细节,包含all.any.for in等操作,以及介绍我解决问题的思路. 一.开篇 先从我看到的一个简单的语句开始 ...

  9. MySQL SQL语句分析查询优化

    如何获取有性能问题的SQL 1.通过用户反馈获取存在性能问题的SQL 2.通过慢查询日志获取性能问题的SQL 3.实时获取存在性能问题的SQL 使用慢查询日志获取有性能问题的SQL 首先介绍下慢查询相 ...

  10. MySQL 语句分析

    公司使用的数据库是 MySQL 数据库,我对于 MySQL 的了解仅仅是上学的时候学过PHP略微了解. 我认为,作为一个后端程序员,除了在意功能能不能实现之外, 在实现功能之后,还要去想有没有更好的办 ...

随机推荐

  1. PAT A1046 Shortest Distance (20 分)

    题目提交一直出现段错误,经过在网上搜索得知是数组溢出,故将数组设置的大一点 AC代码 #include <cstdio> #include <algorithm> #defin ...

  2. PAT B1015A1062德才论(25)

    题目描述 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...

  3. PAT A1065 A+B and C (64bit) (20 分)

    AC代码 #include <cstdio> int main() { #ifdef ONLINE_JUDGE #else freopen("1.txt", " ...

  4. Java开源网页抓取工具httpClient以及jsoup

    网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据

  5. DRF 认证 权限 视图 频率

    认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判 ...

  6. webpack自定义loader并发布

    一.官网对loader的解释: 1.loader 是导出为一个函数的 node 模块.该函数在 loader 转换资源的时候调用.给定的函数将调用 loader API,并通过 this 上下文访问. ...

  7. JS 正则验证字符串中是否含有数字

    var test_text="abc123";//2. if (new RegExp("[0-9]").test(test_text)) { return fa ...

  8. Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。

    今天早上起床看到这个Facebook上的热搜帖.太感动了.这个老人癌症不治后最后心愿是跟他的儿子们一起喝一次啤酒.这个帖子被他孙子贴上网以后牵动了千万人的心.

  9. fork 代码进阶

    fork进阶知识 先看一份代码: [cpp] view plain copy /* *  fork_test.c *  version 2 *  Created on: 2010-5-29 *     ...

  10. 正着打星星(js)

    //让用户输入行数,使用for循环嵌套打出正着的星星来,行数等于用户输入的数字 //例如:用户输入6 // * // *** // ***** // ******* // ********* // * ...