我们在使用IDA 逆向so的时候,经常会遇见莫名其妙的特别大的数据。比如1.0 ,使用IDA反编译之后 会变成1065353216。这到底是怎么回事呢?这就要谈到 IEEE 754 标准(这里不做介绍,请自行百度)。使用太上仪表(http://www.styb.cn/cms/ieee_754.php#)把1.0转化成二进制数就是00111111100000000000000000000000。所以它的十六进制码就是3F800000。把这个十六进制码转换成十进制码就是 1065353216。所以在IDA 里面我们看到了莫名其妙的数据 1065353216。
那么其他数据对应的浮点型是什么呢?我们反其道而行,比如我们碰到1056964608,将其转成16进制数就是 3f000000,再由十六进制转浮点数就是 0.5。