Hello crews,
I'm doing RE since years. Most of the time my research is targeting multimedia compression algorithms and formats. Most of them use some floating-point code. Its complexity may be ranging between very simply tasks and high-speed signal processing.
I often need to understand some piece of code were optimized up using hardcoded tables. Here an example of such a table:
0.0, 1.0, 1.414, 1.732, 2.0, 2.236, 2.449, 2.645, 2.828, 3.0 and so on
It's obvious that the table stores square root products. Then we can rewrite that to the following:
sqrt(0), sqrt(1), sqrt(2), sqrt(3), sqrt(4), sqrt(5), sqrt(6), sqrt(7), sqrt(8), sqrt(9) and so on...
This is more readable and helps to understand the code much easier...
Most often numbers stored in tables are sin/cos precalculations, exp products, log tables, linear prediction and so on...
NOW MY QUESTION:
Is there any possibility to analyse such tables (vector of numbers) mathematically in order to be able to extract an unknown function? Is there a tool/script can give an idea what kind of number it can be? I was always doing it using my knowledges/experience and some google help :))
The example above is very simple but programs in the real world will be surely much more complex...
Any help would be appreciated
Best regards
Maxim







