Mac查看文件内容常用的命令小结

简介: 前言最近苹果的热更新和私有库问题检查的更严了,如果应用被拒,苹果在拒绝信中会说到使用strings/otool/nm命令进行自查,所以总结了一些命令,方便查找和定位文件内容相关信息。

前言

最近苹果的热更新和私有库问题检查的更严了,如果应用被拒,苹果在拒绝信中会说到使用strings/otool/nm命令进行自查,所以总结了一些命令,方便查找和定位文件内容相关信息。

1、grep

  • 作用:判断是否包含字符串

  • 使用示例:

    grep -r "xxx” path

检查是否包含(weixin)字符串:

img_57e6d38b0081c0cbef4d583a2c199f17.png
grep -r "xxx” path.png

matches 表示包含。

2、strings

  • 作用:find the printable strings in a object, or other binary, file

  • 使用示例:

    strings a.out | grep hello //检查 a.out 文件中含有 hello 字符串的字节序列

  • 检查二进制是否含有关键词的库(比如检查私有库):


    img_2fde1511561581b197f01a3d24a32993.png
    strings a.out | grep hello.png
  • 更多使用说明 man strings

3、otool

  • 作用: object file displaying tool. (针对目标文件的展示工具,用来发现应用中使用到了哪些系统库,调用了其中哪些方法,使用了库中哪些对象及属性)

  • 使用示例:
    otool -L path //查看可执行程序都链接了那些库

    otool -L path | grep "xxx" //筛选是否链接了xxx库

    otool -D path //查看支持的架构

    otool -ov path //output the Objective-C class structures and their defined methods.(输出Object-C类结构以及定义的方法)

  • 查看该应用是否砸壳:
    otool -l path | grep crypt //cryptid 0(砸壳) 1(未砸壳)

    img_efeec75834a8e30991e645c18486feb1.png
    otool -l path | grep crypt.png

  • 更多用法 man otool

4、nm

  • 作用:display name list (symbol table). (显示符号表)

  • 使用示例:
    nm path //得到Mach-O中的程序符号表

    nm -nm path//目标文件的所有符号

    img_215cf45e7d6046aa159b9fa2330eb133.png
    nm -nm path.png

    符号表中标示为 undefined,意思是目标文件引用了类_XXX(XXX库),不过这并没有实现它。

  • 更多用法 man nm

5、file

  • 作用:determine file type. (判断文件类型)

  • 使用示例:
    file path

    判断.a/framework是静态库还是动态库:
    静态库:


    img_99db82e1092fe39753e415129b9c37f5.png
    file path - static Lib.png

    动态库:


    img_765aa0e2f994d9653df690c1b9d6118f.png
    file path - dynamically Lib.png

6、lipo

  • 作用:create or operate on universal files(创建或处理通用文件的工具)

  • 使用示例:
    lipo -info 'file path' // 判断静态库所支持的平台 - i386 armv7 armv7s x86_64 arm64

    lipo -remove i386 origin_xxx.a -output op_xxx.a // 删除静态库包括的i386平台

    lipo -thin i386 origin_xxx.a -output op_xxx.a // 拆分静态库,只保留i386 CPU架构

    lipo -create device_xxx.a simulator_xxx.a -output universal_xxx.a //对真机或者模拟器分别打出 .a 文件合并

参考阅读


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
mac上datagrip.vmoptions文件编辑错误导致DataGrip软件打不开
mac上datagrip.vmoptions文件编辑错误导致DataGrip软件打不开
|
3月前
|
存储 Shell
Mac终端工具Terminal (3):在Mac上的终端中执行命令和运行工具
Mac终端工具Terminal (3):在Mac上的终端中执行命令和运行工具
|
5月前
|
iOS开发 MacOS
Mac 解决安装软件文件已损坏,打不开,您应该推出磁盘映像
Mac 解决安装软件文件已损坏,打不开,您应该推出磁盘映像
180 0
|
7月前
|
Web App开发 开发者
Mac Chrome crx(插件) 文件导出与导入
Mac Chrome crx(插件) 文件导出与导入
229 0
|
5月前
|
IDE 开发工具 计算机视觉
关于opencv在PyCharm中没有提示的解决方案mac和win通用(不是改文件和复制)
由于最近有项目需要使用到IDE的debug功能,jupyter notebook没有debug功能,所以需要使用PyCharm。平时使用jupyter的时候也没有遇到opencv没有提示的问题,所以遇到这个问题的时候上网搜索了各种方法包括但不限于:复制文件,修改init文件,降低opencv版本等一系列方法都无效。我在三天内重装了5次系统n次anaconda,终于在最后解决了这个问题,放在这里供大家参考。
|
6月前
|
调度 iOS开发 开发者
Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
Mac提示文件:已损坏,无法打开。你应该把它移到废纸篓
139 0
|
5月前
Mac 下终端命令无法使用的问题
Mac 下终端命令无法使用的问题
97 1
|
2月前
|
Shell Docker 容器
mac终端命令补全设置(docker 命令补全)
mac终端命令补全设置(docker 命令补全)
43 0
|
7月前
|
移动开发 Unix Linux
sed命令在Mac和Linux下的不同
sed命令在Mac和Linux下的不同
42 0
|
2月前
|
存储 数据安全/隐私保护 Swift
使用MAC如何打开远程服务器和文件管理工具
使用MAC如何打开远程服务器和文件管理工具