透过现象看本质。。。
2009-11-12 11:03
573 查看
在高级语言的赋值操作,把它用ASM 来表示真的是很奇妙的一件事。。。
现在让我来分析一下它的变量的赋值操作吧。
double sum=0, item=1;
对于这样的定义,大家应该很熟悉了,但是如果换成这个样子,你还能认出它吗?
11: double sum=0, item=1;
004015A8 mov dword ptr [ebp-8],0
004015AF mov dword ptr [ebp-4],0
004015B6 mov dword ptr [ebp-10h],0
004015BD mov dword ptr [ebp-0Ch],3FF00000h //程序中怎么没有变量1 呀 ?为此,我也困惑了好久,还有就是,为什么只定义了两个变量,ASM 中却有 四次的初始化?
带着这一个个的疑问,我们来看看程序执行时的内存模型吧。。。
对于 sum = 0, 程序执行时,先是初始化高位的地址空间,然后才是低位的,
所以一条 double 的赋值语句对应两条 ASM 的初始化,它们对应的是高位和低位的操作
float 的类型就只有一条。。。
现在我们知道了为什么 在高级语言中为什么 double 对应两条的 ASM 语句。。。
最后,我们来看看,它的赋值规则,这个事最让人困惑的地方了。。。
对于赋值,就要知道 编码的规则了,从计组中,我们知道,最高位0 表 +, 1 表 -;
double指数偏移基数:3FFH
也就是说 当 double i = 1;
它在ASM中就是004015BD mov dword ptr [ebp-0Ch],3FF00000h
具体逆向的时候,可以通过动态跟踪得到其值。。。
当然也可以通过浮点数的运算的到。。。
现在让我来分析一下它的变量的赋值操作吧。
double sum=0, item=1;
对于这样的定义,大家应该很熟悉了,但是如果换成这个样子,你还能认出它吗?
11: double sum=0, item=1;
004015A8 mov dword ptr [ebp-8],0
004015AF mov dword ptr [ebp-4],0
004015B6 mov dword ptr [ebp-10h],0
004015BD mov dword ptr [ebp-0Ch],3FF00000h //程序中怎么没有变量1 呀 ?为此,我也困惑了好久,还有就是,为什么只定义了两个变量,ASM 中却有 四次的初始化?
带着这一个个的疑问,我们来看看程序执行时的内存模型吧。。。
对于 sum = 0, 程序执行时,先是初始化高位的地址空间,然后才是低位的,
所以一条 double 的赋值语句对应两条 ASM 的初始化,它们对应的是高位和低位的操作
float 的类型就只有一条。。。
现在我们知道了为什么 在高级语言中为什么 double 对应两条的 ASM 语句。。。
最后,我们来看看,它的赋值规则,这个事最让人困惑的地方了。。。
对于赋值,就要知道 编码的规则了,从计组中,我们知道,最高位0 表 +, 1 表 -;
double指数偏移基数:3FFH
也就是说 当 double i = 1;
它在ASM中就是004015BD mov dword ptr [ebp-0Ch],3FF00000h
具体逆向的时候,可以通过动态跟踪得到其值。。。
当然也可以通过浮点数的运算的到。。。
相关文章推荐
- 透过现象看本质,透析NAC系统几步走(1) 推荐
- 程序人生之一 MVC——透过现象看本质
- 如何透过商业本质看“互联网+”现象?
- 【中服OA】CIO选型OA系统,需透过现象看本质
- 透过现象看本质!转自酷客http://coolshell.cn/articles/4102.html
- 大道至简之四:透过现象看本质
- 透过现象看本质
- 程序人生之一 MVC——透过现象看本质
- 21个小故事、透过现象看本质
- 透过现象看本质:共享单车之摩拜和ofo的工作原理分析
- 透过现象看本质:喧闹的中国电子商务
- poj-3013 透过现象看本质,其实都一样
- 大道至简之五:透过现象看本质
- 透过现象看本质
- .Net Winform开发笔记(四)透过现象看本质
- 学会透过现象看本质,即使现象有时候挺诡异
- 透过现象看本质:如何真正实现数据可视化?
- 大道至简之六:透过现象看本质