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. GitHub访问及git工具克隆慢问题解决

    一.查询合适的DNS服务器 1.站长工具DNS查询服务器 github.com github.global.ssl.fastly.net 2.选择TTL值最小的记录,记录下对应服务器IP地址 例如 g ...

  2. X86逆向6:易语言程序的DIY

    易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序DIY,这里是用的易语言演示,当然这门技术也是可以应用到任何一门编译型语言中的,只要掌握合适 ...

  3. 拜托,别再问我 QPS、TPS、PV、UV、GMV、IP、RPS 好吗?

    关于 QPS.TPS.PV.UV.GMV.IP.RPS 这些词语,看起来好像挺专业.但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要知道它们分别代表什么意思吧? ...

  4. MVC4学习要点记四

    一.使用原生SQL使用EF的一个优点就是自动帮我们生成SQL,这在常规情况下很方便,但有些情况下用EF却不适合.另外还有些特别复杂的语句,利用EF很难生成.所以,EF提供一组方法用来执行原生的SQL. ...

  5. 【weixin】微信支付简介

    一.微信支付模式 1.付款码支付 付款码支付是用户展示微信钱包内的“刷卡条码/二维码”给商户系统扫描后直接完成支付的模式.主要应用线下面对面收银的场景. 2.Native支付 Native支付是商户系 ...

  6. 【科创人·独家】连续创业者高春辉的这六年:高强度投入打造全球领先的IP数据库

    您能看到:高春辉的创业观,IPIP.NET半程复盘及未来规划,连续创业的体验,小众产品趣事 您看不到:往年创业的回顾,技术干货,受制于篇幅忍痛割舍的精彩观点 文末彩蛋:<与雷军的分歧并非否定电商 ...

  7. HTML之盒子变形动画

    4个圆形球作圆周运动 代码: <div class="box"> <div class="box1"></div> < ...

  8. winfrom 操作Excel

    利用Aspose.Cells.dll 操作Excel,内容如下: 1.界面设计: 2.逻辑: using System; using System.Collections.Generic; using ...

  9. hourglassnet网络解析

    hourglassnet中文名称是沙漏网络,起初用于人体关键点检测,代码,https://github.com/bearpaw/pytorch-pose 后来被广泛的应用到其他领域,我知道的有双目深度 ...

  10. 关于SAMBA的关键参考资源

    https://www.samba.org/samba/docs/man/ https://devel.samba.org/ http://www.ubiqx.org/cifs/ https://ww ...