微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

内联外部库函数的程序集中会发生什么?

如何解决内联外部库函数的程序集中会发生什么?

假设我使用的是 c 或 c++ 库 (B)(最终在标头中包含内联和模板),我将其用作我自己的库 (A) 或程序中的动态库 (B)。

最终程序集 A (so/dll) 中的函数会发生什么变化?特别是,如果它是模板、库 B 中的内联,或者它是我定义的内联函数的一部分(在 A 中)?

我很想知道装配结果是否在我自己的装配中完成(即,外部装配的一部分被复制到我自己的装配中,装配 B 的部分最终在装配 A 中),并且我可以' t 将其区分为“用作外部库函数”与“定义为我自己的代码/程序集”。换句话说,在动态分析中,无论我是否提供符号,在发布或调试程序集中,我是否无法在生成的库中看到这些函数来自外部库。

特别是,在发布程序集中,我是否会在程序集 A 中看到具有“有意义”(call libraryBfunccall __hiddenBfunc)的私有(未导出)函数(例如,{{ 1}}) ?例如,一旦我反汇编了我的库 A,而不是一些:

call FUN_180032c4c

CALL qword ptr [->KERNEL32.DLL::GetFileType]

我会得到例如:

addr KERNEL32.DLL::RtlUnwindEx

另一种看待这一点的方法是:我可以通过内联使用某个函数函数来隐藏我使用动态库中的某个函数吗?当外部库函数是模板或内联函数时,这种隐藏是否会系统地发生?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。