-
Positioned at Why does the first case In the second case, |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
In the phrases "code reference" and "data reference", the words "code" and "data" refer to the location of the reference, not the kind of reference it is. So any references residing in functions are code references, even when those references are that kind that just get the address of the referent. First case: Expecting only calls or branches for code references is thinking incorrectly of perhaps an "execution reference". As explained above, we have code (the instruction EDIT: Peter has a nice compact way of stating it:
Second case: When an address is the argument to a function, binja considers it a reference. Here's the more of the code from
With knowledge of the calling convention, Binja's dataflow detects the address loaded at 546 is used as an argument at 554 and lists it as a reference. This is a pitfall if you are wanting to detect calls to a function by iterating over cross references and checking that a call exists at each location. |
Beta Was this translation helpful? Give feedback.
In the phrases "code reference" and "data reference", the words "code" and "data" refer to the location of the reference, not the kind of reference it is. So any references residing in functions are code references, even when those references are that kind that just get the address of the referent.
First case:
Expecting only calls or branches for code references is thinking incorrectly of perhaps an "execution reference". As explained above, we have code (the instruction
lea rcx, [rel __libc_csu_init]
referencing (getting the address of)__libc_csu_init
into rcx, so it's a code reference.EDIT: Peter has a nice compact way of stating it: