【问题标题】:How to write headers files for a binary that's already compiled in OSX?如何为已经在 OSX 中编译的二进制文件编写头文件?
【发布时间】:2021-02-21 15:29:26
【问题描述】:

如果我缺少 .dylib/.a/.so 文件的头文件,有没有办法确定我可以链接哪些函数,然后自己编写头文件?

我问的是 OSX,因为用于对象检查的工具略有不同。

【问题讨论】:

    标签: c header decompiler


    【解决方案1】:

    使用 otool 相当简单。

    https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/Articles/MachOOverview.html#:~:text=Mach%2DO%20is%20the%20native,file%20are%20read%20into%20memory.

    这是 MachO 二进制文件的 __text 部分保留可链接代码。

    所以你可以像这样在 OSX 中打印出二进制文件中的所有函数。

    otool -t libpython3.8.a -v
    

    -t 用于 __text 部分,-v 用于反汇编。

    会输出类似的东西

    __PyDict_Pop:
    0000000000003300    pushq   %rbp
    0000000000003301    movq    %rsp, %rbp
    ... assembly ...
    ... ret value...
    0000000000004614    popq    %rbp
    0000000000004615    retq
    0000000000004616    nopw    %cs:(%rax,%rax)
    

    【讨论】:

    • 你需要更多的逆向工程才能弄清楚参数、它们的类型和它们的顺序。
    • 一旦有了符号,就可以阅读程序集了。没有办法。
    猜你喜欢
    • 2017-05-03
    • 2015-01-25
    • 2012-02-13
    • 2016-04-08
    • 1970-01-01
    • 2012-06-25
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多