This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AUDIO-AM275-EVM:使用 objcopy 或 strip7x.exe (C7x CGT) 支持符号混淆或白名单

Guru**** 2468460 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/1544009/audio-am275-evm-support-for-symbol-obfuscation-or-whitelisting-with-objcopy-or-strip7x-exe-c7x-cgt

部件号:AUDIO-AM275-EVM


工具/软件:

尊敬的 TI 团队:

在许多用于 ARM 或其他 DSP 工具链的基于 GNU 的工具链中、objcopy通常会使用类似的工具 符号级后处理 、包括:

  • 去除除白名单以外的所有符号--keep-symbol ()

  • 重命名符号以混淆内部逻辑

  • 从较大的库创建最少的公共 API

我的用例涉及构建 用于部署的静态库、在这里、我想隐藏或混淆内部实现详细信息、同时仅公开特定的公共 API 符号 以进行 IP 保护。

有了 C7x 代码生成工具,我遇到了strip7x.exe,但它似乎只提供了完整--postlink--rom的二进制剥离选项(如,)没有细粒度的符号控制。 我也找不到objcopy 支持此类过滤的工具、如或符号重命名实用程序。

您能否澄清一下:

  1. TI 是否提供任何strip7x.exeofd7x支持符号级白名单或混淆的工具(如,等)?

  2. TI 是否支持仅在.out.lib文件中保留一组特定的公共符号的方法?

  3. 如果不直接受支持、是否有使用编译器/链接器可见性控制(例如链接器命令文件或属性)的建议权变措施?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TI 没有记录任何支持在库中隐藏或混淆符号的方法。   

    我怀疑最好的解决方案是在编译前混淆符号(除了您打算公开的符号)、即在 C 或 C++源代码级别执行。   

    TI 还有其他工具链支持 objcopy 型号。  TI Arm Clang 编译器 支持名为 tiarmobjcopy 。  我们不使用文档或测试 tiarmobjcopy 构建的可执行文件类似的功能。  “我知道,我不会告你状的。“

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、George、

    我在尝试使用时遇到此错误tiarmobjcopy:

    tiarmobjcopy.exe: error: invalid alignment 1 of group section '__fpclassify'

    如果是这样、我想知道通常如何为 C7x 提供 AWE 的第三方自定义库。 我知道可以strip7x选择使用类似的方法、但这可能会使支持和调试变得更加困难。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试使用
    时遇到此错误 tiarmobjcopy

    我猜 tiarmobjcopy 不管用。  我很抱歉建议这样做。

    我想知道通常如何为 C7x
    提供 AWE 的第三方自定义库

    我不知道。  我唯一猜测是它们在编译前使用了符号混淆。

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我打算使用 strip7x.exe、是否可以离开全局 API 并单独去除其余符号? 否则、如果所有符号都被去除、包括要从外部世界调用的 API、那么提供静态库权限没有意义吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我打算使用 strip7x.exe、是否可以保留全局 API 并单独去除其余符号?

    很遗憾、不会

    否则、如果所有符号都被去除、包括要从外部调用的 API、那么提供静态库权限没有意义?

    是的。  strip7x 不是适合您的用例的工具。

    谢谢。此致、

    -乔治