gpt4 book ai didi

xcode - 如何使用otool检查是否启用了Stack Smashing?

转载 作者:行者123 更新时间:2023-12-02 08:05:44 25 4
gpt4 key购买 nike

我看到很多答案,比如 this , 和 this网上说要用otool命令检查 stack_chk_guardstack_chk_fail在项目上。

问题是,我不知道 otool 必须应用到哪个文件。在 source , 他们这样说 otool将应用于扩展名为 .a 的文件,这是一个图书馆。但是我不知道如何将其应用于我想检查整个项目而不仅仅是库的情况。我试图用 .a 在我的项目中找到任何文件扩展名,我没有找到。我试过运行 otool反对 .app , .framework , .xcarchive , 和 .ipa ,都失败了。

有人可以帮忙吗?如有需要请详细说明,因为我从不使用otool之前,互联网上的文档在描述可以由 otool 检查的文件时根本没有帮助。 .

最佳答案

经过一番搜索之后,我发现您应该提供给 otool 的文件位于 .app 目录中。是的,.app 是一个目录,而不是一个文件。

所以这是如何做到的:

  • 首先构建您的项目,这将创建一个 .app 文件。
  • Xcode 项目导航器(左侧面板)中的
  • ,在底部过滤 .app 名称。
  • 右键单击​​ .app 文件,选择“在查找器中显示”。
  • 打开终端窗口。
  • 输入 cd 然后将 .app 目录拖到终端。它将填充路径。
  • 类型 otool -Iv Your_App_Binary_Name | grep stack

  • 这个 Your_App_Binary_Name 位可能会让你感到困惑,但不要如此。请注意您的 .app 目录的名称。例如,如果目录是 MyApp.app ,那么你的二进制文件应该是 MyApp 没有扩展名,在 MyApp.app 目录内。如果您使用 finder 看到该文件(右键单击 .app 并选择“显示包内容”),您将看到二进制文件的类型是 UNIX 可执行文件。

    (别忘了,如果你的应用名称包含空格,你需要使用反斜杠来转义空格。例如,如果你的应用名称是“My Holy App”,那么目录是 My\ Holy\ App.app ,应用二进制文件是 My\ Holy\ App )

    因此,对于名为“My App”的目标,您的终端将如下所示:
    $ cd ......./Build/Products/Debug-iphoneos/MyApp.app
    $ otool -Iv MyApp | grep stack
    0x00000001000c17bc 19966 ___stack_chk_fail
    0x00000001000d8268 19967 ___stack_chk_guard
    0x00000001000d8d18 19966 ___stack_chk_fail

    或者如果您的目标有像“My Holy App”这样的空格:
    $ cd ......./Build/Products/Debug-iphoneos/My\ Holy\ App.app
    $ otool -Iv My\ Holy\ App | grep stack
    0x00000001000c17bc 19966 ___stack_chk_fail
    0x00000001000d8268 19967 ___stack_chk_guard
    0x00000001000d8d18 19966 ___stack_chk_fail

    编辑: 用户 mnemonic23 表示,如果您使用从 bitcode 重建的方式编译 IPA,则 otool 的结果将不会显示上述结果。您必须编译 IPA 而无需从 bitcode 重建。

    关于xcode - 如何使用otool检查是否启用了Stack Smashing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com