数据结构的逆向工程

时间:2016-11-15 14:12:55

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

我正在对.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

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来这些数字只是连接在一起的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