我正在对一些代码进行逆向工程,IDA 从中生成了以下反汇编。这些特定的代码行仅用于说明目的。请注意,第三行不是按名称而是按地址调用特定函数。
mov rcx, [rsp+128h+var_D8] // reg CX gets the address at stack pointer+128h+var_D8 bytes
mov r8, [rcx] // the address at reg CX is stored to reg r8
call qword ptr [r8 + 18h] // at address rax+18h, call function defined by qword bytes
我有兴趣确定正在调用哪个函数。我可以使用哪些机制、工具、技巧等来确定调用qword ptr <address>
所指的反汇编中的哪个函数?我准备尝试其他反汇编程序。
从对我之前的问题的回答来看,这被称为“间接调用”或(可能是“虚拟函数调用”)。反汇编有很多这样的,那么我该如何解决呢?此外,IDA 已经确定了数百个函数。我如何确定在任何给定的间接调用(或虚拟调用)期间实际调用了哪个?