
在分析 ELF 文件 /usr/bin/curl(Ubuntu 14.04,64 位)时,我偶然发现了一个奇怪的函数(见图)。它被定期调用 viacall sub_403D90但不以 ret 结尾。相反,它跳转到一个标签/另一个函数 ( sub_403C90)。这很奇怪,因为似乎没有返回到sub_403D90,因为从sub_403C90控制流开始,没有跳转,只有 rets。
有人可以向我解释这是为什么吗?有道理吗?

在分析 ELF 文件 /usr/bin/curl(Ubuntu 14.04,64 位)时,我偶然发现了一个奇怪的函数(见图)。它被定期调用 viacall sub_403D90但不以 ret 结尾。相反,它跳转到一个标签/另一个函数 ( sub_403C90)。这很奇怪,因为似乎没有返回到sub_403D90,因为从sub_403C90控制流开始,没有跳转,只有 rets。
有人可以向我解释这是为什么吗?有道理吗?
这只是一点点优化。Acall xxxx后跟 aret可以优化为 a jmp xxxx。