So I'm trying to write a reversing tool right now and trying to make a CALL graph
the problem I'm having is some calls are like Call *eax instead Call 'address'
I can easily generate the call-graph with absolute calls, but not with these
so i have three questions :
what type of functions get called using register instead of absolute? i want to only generate call graph for functions inside the main program and not libraries and etc, do i need to worry about register calls or these are only used for special functions? if so, why? ( even if these are only for library functions i dont get why can't they be converted into absolute address during relocation??)
if i wanted to check what is the function that is being called aka by reading the register, is this possible using static analysis or i have to do dynamic analysis?
can i make a decent call-graph using static analysis, meaning by only reading the binary? do popular tools like IDA use static to generate call graph as well? or will i face real problems if i do so?