【问题标题】:Figuring out how a number is represented in hex form弄清楚数字如何以十六进制形式表示
【发布时间】:2019-01-20 07:50:45
【问题描述】:

目前在备份机器上的程序时,我试图从本质上对由 CNC 机器生成的文件格式进行逆向工程,以便我可以在标准 PC 上读取程序。已经打开了一些创建的备份文件,可以清楚地看到程序名称等数据模式,明文形式可以清楚地看到。我正在努力解决的一件事是数字是如何表示的。

例如:数字“20”在此文件中以十六进制形式表示为“40 0D 03 00”。

更多示例:

“-213.6287”:“21 67 DF FF”

“-500.3366”:“9A A7 B3 FF”

对弄清楚这些十六进制值如何构成这些数字有帮助吗?

谢谢

【问题讨论】:

  • 如果我是你,我会继续反转 - 20 十进制与 40 0D 03 00 十六进制没有任何直接关系。所以也许它不是直接存储小数,也许它是一个向量或其他东西?

标签: reverse-engineering binaryfiles


【解决方案1】:

这些数字存储为 little-endian 有符号整数,作为万分之一的计数。

例如:数字“20”在此文件中以十六进制形式表示为“40 0D 03 00”。

0x00030d40 = 200000。

“-213.6287”:“21 67 DF FF”

0xffdf6721 = -2136287.

“-500.3366”:“9A A7 B3 FF”

0xffb3a79a = -5003366.

【讨论】:

  • 我在分析十六进制值时才意识到这一点。小数点的位置是怎么决定的呢?
  • 根据您给出的示例,缩放因子(10,000)可能只是格式或设备固有的。
  • 是的,看来你是对的!刚刚扫描了文件的其余部分,你说它固有的格式是对的 :) 非常感谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2015-02-23
  • 2016-01-10
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多