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

问题描述

假设我使用的是 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 (将#修改为@)