美文网首页
指针&MachO文件

指针&MachO文件

作者: 富城 | 来源:发表于2019-02-26 11:59 被阅读0次

    指针&MachO文件

    指针

    • 指针在64位中,占8个字节(64个 bit)
    • 编译器决定了指针不能做乘法和除法;
    • 指针自增、自减的结果,其实就是指针指向的数据类型宽度决定的(去掉一个星,看左边的类型)!
    • 指针加上或减去一个整数的结果,其实就是指针指向的数据类型宽度决定的!
    • 指针求差,得到的结果是整形,其结果和指针指向的数据类型宽度有关(指针相减再除以数据类型的宽度)!
    • 这也就是指针的特点! 它的运算单位 是数据类型的宽度!
    • 数据类型是可以强制装换的,结构体和基本类型是不能转换的,任何变量都是可以用取地址符“&”

    关于汇编,重点.

    逆向原理

    动态调试 通过界面调试Cycript\Xcode LLDB!
    静态分析 利用我们之前学习的汇编代码,分析三方APP的源码!
    代码注入 注入的其实是动态库!HOOK代码 改变原来程序的执行流程!
    重签名 安装在非越狱手机上面

    class-dump

    $ class-dump -H MachO文件Path -o 头文件路径

    MachO文件

    官方介绍总共有11种格式! 是 Mach Object的缩写,是Mac\iOS 上用于存储程序,库的标准格式!
    常见的格式:

    • 1.可执行文件
    • 2.objcet
      • .o 文件(目标文件)
      • .a 静态库文件.其实就是N个.o文件的集合
    • 3.DYLIB: 动态库文件
      • dylib
      • framework
    • 4.动态连接器
    • 5.DSYM

    动态库共享缓存

    为了提高性能,系统的动态库文件都存在了动态库共享缓存里面!

    动态加载器(dyld)

    • dynamic linker
    • dynamic loadel

    拆分二进制文件

    经常用于整合静态库

    瘦身

    $ lipo 002--可执行文件 -thin armv7 -output macho_armv7
    $ lipo 002--可执行文件 -thin armv64 -output macho_armv64
    

    整合

    $ lipo -create macho_armv7 macho_arm64 -output machO_v7_64
    

    相关文章

      网友评论

          本文标题:指针&MachO文件

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