So basically I am writing some code to do analysis work on disassembled assembly code.
I am trapped in this issue for a while, here is an simple example of a disassembled asm code by objdump, basically all the address symbols have been translated into concrete value.
1. mov 0x8408080, %eax
2. ....
3. call *%eax
So basically for the above example, it is easy to determine that 0x8408080
used in line 1 is an address of code, and I know it is relatively easy to heuristically consider all the value falling into the range of .text section
as a pointer.
However, how to use static analysis to automatically identify this issue? (I want to write a tool to analyze large amount of code as accurate as possible)
I know somehow I should use constant propagation to forwardly do the analysis, but basically as I am new to program analysis, I just don't know actually where to start..
Does anyone have experiences like this? Or is there any implemented tools I can look for help..?