美文网首页iOS逆向开发
<安全攻防之通用二进制文件>

<安全攻防之通用二进制文件>

作者: 高阿呆 | 来源:发表于2019-11-07 09:42 被阅读0次
    $通用二进制(Universal binary)

    苹果电脑公司提出的一种程序代码,在同一个程序包中同时为两种架构提供最理想的性能,当程序在操作系统中运行后,将自动检测通用二进制代码,然后根据使用的架构自动选择合适的代码来执行,因此实现无损的本地程序运行速度。
    Xcode编译可以指定生成哪些类型的MachO文件.是根据Architectures和Valid Architectures交集决定的,在Debug模式下,会根据手机的系统决定生成与手机系统对应的架构,在release模式下会默认生成armv7和arm64两种架构的合并.


    architercture.png

    $lipo命令

    我们可以通过lipo -info xxx 或 file xxx 查看MachO可执行文件有哪些架构

    $lipo -info xxx
    或者
    $file xxx
    

    如果包含多种架构,我们可以给二进制文件的瘦身,拆分多种架构的二进制文件

    $lipo xxx -thin armv7 -output xxx输出的文件名      // armv7架构
    $lipo xxx -thin arm64 -output xxx输出的文件名     // arm64架构
    

    也可以把多种架构的二进制整合成一个包含多种架构的二进制文件

    $lipo -create xxx xxx -output xxx输出的文件名   // 参数1: 第一种架构的文件名 参数2:第二种架构的文件名 ...
    
    在逆向开发中,我们通常把含有多种架构的MacO文件拆分开来单独分析,所以上边两条命令会经常使用.

    相关文章

      网友评论

        本文标题:<安全攻防之通用二进制文件>

        本文链接:https://www.haomeiwen.com/subject/uuqvbctx.html