我有一个函数的间接调用。我跟踪了程序并将目标添加到外部参照中,因此可以正常工作。但问题是,在呼叫所在的位置,没有显示链接。我以为,当我添加一个XREF时,会显示两个位置,因为这也是其他引用的行为,IDA会自动找出。

为了说明我的意思:

此呼叫未显示给我指向的位置:

CODE:004A3F07 00C                 call    dword ptr [edx+28h]


我添加的外部参照显示了链接: >
CODE:004A3390     DecryptMemory proc near            ; CODE XREF: sub_4A3EC0:loc_4A3F07 P


是否可以使IDA在两个地址上显示引用?我知道我也可以在那里创建一个手动外部参照,但是IDA也可以创建一个标签,这在重新注册时会有些混乱。我试图删除标签,但这也不起作用(可能吗?)。

评论

您是否尝试过以其他方式添加外部参照?

是。这就是为什么我说要分配标签。问题在于,在这种情况下,标签很容易混淆,因为看起来好像这是一个跳跃目标,但事实并非如此。我想它总比没有好,但是我虽然XREF可以双向工作,而不只是一个方向。

除了fl_CN外部参照之外,只需创建如下注释:gist.github.com/OALabs/…

没错,添加后向引用将在呼叫现场创建装配体标签。有趣的是,它不接受fl_F外部参照。

#1 楼

IDA不会像您声明的那样在源头自动显示外部参照的存在。在大多数情况下,这不是必需的,因为目的地通常是作为指令或数据项的一部分打印的。

但是,对于已解决的间接调用,处理器模块可能会显示注释以帮助用户。对于某些处理器(包括x86),您可以使用“更改被呼叫者地址”插件(Alt + F11)手动设置间接呼叫的目的地。它同时添加了外部参照,并使处理器模块打印自动注释。

评论


相反,我并没有声称自己没有这样做。 ;)不过,我尝试使用Alt-F11提出您的建议,看看是否有帮助。谢谢。

– Devolus
13-10-21在6:25

另外,该命令还注释了函数参数。是否可以通过编程方式呼叫被叫方?

–Trass3r
10月4日20:22

#2 楼

您可以在004A3F07中创建提及“ 004A3390”的自由格式注释。在IDA Pro中,可以单击任何与有效参考遥遥相似的内容。双击评论中的004A3390将带您到该位置。

评论


是的,但是如果更改名称,它将不会更新,并且现在在目标中显示为XREF。我现在将此作为解决方法,分别。手动在两边添加XREF。

– Devolus
13-10-22在10:20