Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 解码程序集回调_C_Assembly_Callback_Gdb_X86 64 - Fatal编程技术网

C 解码程序集回调

C 解码程序集回调,c,assembly,callback,gdb,x86-64,C,Assembly,Callback,Gdb,X86 64,在我的汇编代码中,我有一行代码 callq *%rcx 我知道这会调用rcx指向的回调函数。但是,我不知道这个回调是在哪里实现的。我怎么才能弄明白呢 我怎么才能弄明白呢 将显示调用后立即开始执行的代码 如果该代码有一个标签,即是命名函数的一部分,GDB也会显示该标签,您可以用-Wl,-y猜测或询问链接器,该代码来自何处 如果该代码没有标签,那么就没有简单的方法可以找到源代码。如果可以重新链接可执行文件,则linker-Wl,-print map会有所帮助。使用debugger@user

在我的汇编代码中,我有一行代码

    callq *%rcx
我知道这会调用rcx指向的回调函数。但是,我不知道这个回调是在哪里实现的。我怎么才能弄明白呢

我怎么才能弄明白呢

将显示调用后立即开始执行的代码

如果该代码有一个标签,即是命名函数的一部分,GDB也会显示该标签,您可以用-Wl,-y猜测或询问链接器,该代码来自何处

如果该代码没有标签,那么就没有简单的方法可以找到源代码。如果可以重新链接可执行文件,则linker-Wl,-print map会有所帮助。

使用debugger@user3847447%rcx表示CPU寄存器。如果之前没有其他命令显示加载了什么显式地址,那么使用调试器确实是唯一的方法。我猜在这种情况下,通过head进行调试不是一个选项……请查找%rcx指向的地址,并在该地址处反汇编内存。
(gdb) x/10i $rcx