反汇编之流程控制语句的识别(if...else...语句)
来源:互联网 发布:域名劫持软件 编辑:程序博客网 时间:2024/05/19 06:18
if ..... else .... 组合后是一个双分支结构,两者间的功能有所不同。从愈发上看,if...else.... 只是比 if 多出了一个 else, else, 有2个功能,如果 if 判断成功,
则跳过else分支语句块, 如果,if 判断失败,则进入else 语句块。 有了 else语句块的存在,程序在进行流程选择时,必会经过2个分支中的一个。
总结:
;先执行影响标志位的相关指令
jxx ....................................else_begin
if _begin
........
if_end
jmp ...... else_end
else_begin
.....
else_end
如果遇见以上指令,先考察其中的两个跳转指令,当地一个条件跳转指令跳到 else_begin 处的之前有个jmp 指令,则可视为由 if ... else ....组合而成的双分支结构。
根据这两个跳转指令可以得到 if 和 else 语句块的代码边界。通过 cmp 与 jxx 可 还原出 if 的比较信息, jmp 指令之后即为 else 语句块的开始,依次分析,即可逆向分析出 if ....else..... 组合原型。
但是,有时候会遇到复杂的条件表达式作为分支或者循环结构的判定条件的情况, 这时即使直接阅读高级源码也会让人抓狂。在没有 高级源码的情况下,分析者需要先定位语句块的边界,然后根据跳转目标和逻辑依赖慢慢反推出高级源码。
附上 if .... else .... 语句结构图
0 0
- 反汇编之流程控制语句的识别(if...else...语句)
- 反汇编之流程控制语句的识别(if语句)
- ”反汇编之流程控制语句的识别“ 特此说明
- IF...ELSE...语句的反汇编判断
- 图解在反汇编中识别VC++之if-else分支语句
- JAVA 控制流程之分支语句 (if -else)
- 流程控制-if-else语句
- IF...ELSE IF...ELSE IF...ELSE多分枝语句的反汇编判断
- C++反汇编二(if...else语句)
- 控制语句(if-else+循环+switch)汇编规则
- Python流程控制语句->if .......else
- SQL 流程控制语句 之一 IF…ELSE语句
- Java流程控制语句——if-else语句
- PHP流程控制语句-if、if-else、if-elseif-else语句
- C语言流程控制语句的反汇编分析
- 一起来学反汇编-之if语句
- Linux学习之道:linux中流程控制语句if if else case
- 汇编学习第三课之if/if...else语句分析
- 吴恩达 机器学习笔记 Linear Regression with Multiple Variables
- Print A Tree In Vertical Order
- 原码、反码、补码及移位操作
- ireport 的一些技巧
- 吴恩达 机器学习 笔记 some tips on applying machine Learning
- 反汇编之流程控制语句的识别(if...else...语句)
- 浅谈 android ANR 如何找有用的信息
- 友情链接 兼 留言板(在别的地方留言博主可能会没看到哦- -)
- 【经典】【排序】快速排序算法、堆排序
- 写给工作中的你(如果你的才华不能支撑你的梦想,请低下头继续学习)
- 数据结构学习笔记——树与森林
- 了解碎片
- JSTL使用总结(2) fmt标签库和fn标签库
- C++的强制转换(4个关键字)