专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »逆向工程 » A.1.1 较操作数 »正文

A.1.1 较操作数

来源: 发布时间:星期四, 2009年3月12日 浏览:0次 评论:0
附录A 揭密代码结构

这个附录主要讨论高级语言中最常见逻辑和控制流结构并讲述在IA-32汇编语言中实现主要目是给出些在逆向IA-32汇编语言代码时常会遇到些典型汇编代码序列供大家查询

本附录首先详细阐述了IA-32汇编语言中逻辑其中包括操作数是如何比较、以及条件转移指令是怎样使用区别条件代码接下来我详细介绍了各种常用控制流构造其中包括循环和些区别条件块并举例介绍说明它们在汇编语言中是怎样实现其后在第A.3节中讨论了非分支逻辑并阐述了最常见非分支逻辑代码序列最后我简要地讨论了工作集调整(working- tuning)对Windows应用逆向过程影响

A.1  理解低层逻辑

软件Software中将普通袖珍计算器和发展成熟计算机区别开来最基本要素是执行逻辑指令和条件指令代码序列能力下面节将讲述逆向工程中最常见低层逻辑构造并解释它们确切意思我们首先看下汇编语言中比较两个操作数过程这是相当重要构造块几乎在所有逻辑语句中都要用到它然后我们接着讨论IA-32汇编语言中条件代码指令集里个条件指令都会用到这些条件代码

A.1.1  较操作数

绝大多数逻辑语句都涉及对 2个或者 2个以上操作数进行比较通常比较指令后面会跟着串指令它们会根据比较结果区别而执行区别指令下面几节将讲述IA-32汇编语言中比较操作机制对于有符号数和无符号数比较来说机制略有区别

比较两个操作数基本指令是CMP指令CMP指令本质上来说就是用第个操作数减去第 2个操作数并丢弃运算结果只要改变处理器标志位这样就可以根据标志位决定下面应该执行哪条指令和其他许多指令标志位变化会随操作数区别(有符号数还是无符号数)而区别

如果你对IA-32中标志位细节还不是十分熟悉那么我强烈建议你在继续读下去的前先看下附录B中“算术标志位(Arithmetic Flags)”

有符号比较

表A.1给出了用CMP指令比较两个有符号数特性记住:这张表同样适用于SUB指令(CMP实际上执行是减法操作)

表A.1  CMP指令和SUB指令有符号数减法输出表(X表示左操作数Y表示右操作数)


左操作数
右操作数
两个操作数关系
影响标志位
注    释
标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: