• mac os x lipo 工具


    lipo是管理Fat文件的工具,可以查看平台列表,提取、重新打包

    dreamdeMac-mini:test dream$ lipo -info libtest001.a

    Architectures in the fat file: libtest001.a are: armv7 arm64 

    lipo -thin 提取出ARM64平台文件

    dreamdeMac-mini:test dream$ lipo -thin arm64 libtest001.a -output libtest001.ar m64

    ar -t 查看:

    dreamdeMac-mini:test dream$ ar -t libtest001.arm64

    __.SYMDEF

    7zAes-9CC0839951E86BC.o

    ...

    使用 ar -x 解包

    dreamdeMac-mini:arm64 dream$ ar -x ../libtest001.arm64

    dreamdeMac-mini:arm64 dream$ ls

    7zAes-9CC0839951E86BC.o LzmaEnc-A77677D9F23EB2B0.o

    ...

    打包使用 ar -r 命令

    重打包成FAT文件使用 lipo -create

    可 man lipo 查看 -create 参数使用

    解决问题

    使用o-llvm的代码混淆方案。但目前项目静态库大致分成两部分,一部分是开源的加密压缩库,一部分自己编码的加密库,由于压缩算法那块实现逻辑比较复杂,混淆后会大大影响程序执行效率,同时对代码逻辑保护起不到任何作用,因些只需单独将自己编码的加密库混淆。

    翻阅了一些资料,Xcode不能单独给.a的某个.o文件设置编译选项,也可能没找着材料。

    因此通过 lipo 的方式,替换掉里面开源库的 .o 为未混淆版本。

    步骤以下:

    • lipo 拆包

      lipo -thin armv7 xxx.a -output xxx.armv7

      lipo -thin arm64 xxx.a -output xxx.arm64

    • ar 解包

      ar -x xxx.armv7

      ar -x xxx.arm64

    • ar 打包

      ar -r xxx.armv7 *.o

      ar -r xxx.arm64 *.o

    • lipo 打包

      lipo -create xxx.armv7 xxx.arm64 -output xxx.a

  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    ATM管理系统
    活动图与流程图的区别与联系
    四则运算题目生成程序
  • 原文地址:https://www.cnblogs.com/gm-201705/p/9864066.html
Copyright © 2020-2023  润新知