【问题标题】:Reverse engineering of data structure数据结构逆向工程
【发布时间】:2017-03-29 11:06:17
【问题描述】:

我正在对一个 .net 应用程序进行逆向工程,该应用程序在 blob 之后存储在 DB (Firebird) 中。它包含 ~0.00 到 ~6.00 之间的 18 个数字。你知道这可能是什么数据结构,以及如何将此十六进制反转为十进制或浮点数,范围在 0.00~6.00 之间。

FE 13 73 64 7A 59 FB 3F EB 8C 9B 85 26 75 05 40 A0 2F 2D 06 96 73 00 40 B8
A8 BE 1D 0F E5 01 40 D2 DF C9 6A 79 83 03 40 97 65 59 96 65 B9 0C 40 B2 88
F1 7E 55 DE 05 40 E4 45 5E E4 45 9E 00 40 34 05 20 CD 9E B9 FB 3F 58 20 9F
8B 53 D2 FC 3F 1A 44 DB 4D 77 4E 02 40 03 F9 5C 9C 92 B6 FF 3F 85 54 48 85 
54 C8 00 40 E0 C9 6A 79 63 04 05 40 87 05 F2 B9 38 25 09 40 2D 41 79 FA 0D 
66 03 40 CA 77 49 64 11 A3 FE 3F 57 AA D8 BD 10 7F FD 3F

谢谢!

【问题讨论】:

    标签: .net hex blob reverse-engineering data-conversion


    【解决方案1】:

    看起来这些数字只是连接在一起的 18 个 IEEE-754 双精度浮点数。

    您可以使用BitConverter.ToDouble 再次将这些字节中的 8 个转换为数字。因此,您必须以 8 个字节为单位对这个字节数组进行迭代。

    您的特定示例将产生以下数字:

    FE 13 73 64 7A 59 FB 3F => 1.7093452380952
    EB 8C 9B 85 26 75 05 40 => 2.6822023809524
    A0 2F 2D 06 96 73 00 40 => 2.0564384920635
    B8 A8 BE 1D 0F E5 01 40 => 2.2368452380952
    D2 DF C9 6A 79 83 03 40 => 2.4391964285714
    97 65 59 96 65 B9 0C 40 => 3.5905257936508
    B2 88 F1 7E 55 DE 05 40 => 2.7335615079365
    E4 45 5E E4 45 9E 00 40 => 2.0772817460317
    34 05 20 CD 9E B9 FB 3F => 1.7328174603175
    58 20 9F 8B 53 D2 FC 3F => 1.8013492063492
    1A 44 DB 4D 77 4E 02 40 => 2.2883134920635
    03 F9 5C 9C 92 B6 FF 3F => 1.9820734126984
    85 54 48 85 54 C8 00 40 => 2.0978174603175
    E0 C9 6A 79 63 04 05 40 => 2.6271428571429
    87 05 F2 B9 38 25 09 40 => 3.1431746031746
    2D 41 79 FA 0D 66 03 40 => 2.4248313492063
    CA 77 49 64 11 A3 FE 3F => 1.9148115079365
    57 AA D8 BD 10 7F FD 3F => 1.8435218253968
    

    【讨论】:

      猜你喜欢
      • 2016-09-07
      • 2012-10-09
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2017-05-05
      • 1970-01-01
      相关资源
      最近更新 更多