关于修改MachO文件的问题


#1

如图所示, 我想改这个MachO文件的 最低支持的ios版本 想把这个9.0.0 改成 8.0.0该如何改呢,
我用了十六进制编辑文件 UltraEdit 但是始终找不到9.0.0 求大神解惑下…


#2

9.0.0对应十六进制的0009 00 00
所以8.0.0对应十六进制的什么呢? :)
不过其实没记错的话全置0也可以


#3

但是也搜不到0009 00 00, 而且也搜不到 LC_VERSION_MIN_IPHONEOS


#4

搜不到00090000是啥意思,你这图里不是有了LC_VERSION_MIN_IPHONEOS和00090000吗


#5

我是在 十六进制编辑器UltraEdit 里面搜不出来 ,主要我想吧这个9.0.0 改成 8.0.0 不知道如何改


#6

双击上面的十六进制00090000可以直接改。。。


#7

MachOView这个软件 不能改二进制文件吧


#8

我擦 居然可以改 9.0.0对应十六进制的0009 00 00
那么8.0.0对应十六进制 是不是 0008 00 00 ?


#9

直接红了, 这样是对的吗


#10

红色代表这栏修改过而已。。。。cmd+S保存之后关掉窗口重新解析一次看看不就知道了


#11

嗯嗯 可以了 谢谢大佬:+1::+1:


#12

这些东西的结构在mach-o/loader.h里是能查到的 https://opensource.apple.com/source/cctools/cctools-870/include/mach-o/loader.h


#13

比如你这个对应:

struct version_min_command {
    uint32_t	cmd;		/* LC_VERSION_MIN_MACOSX or
				   LC_VERSION_MIN_IPHONEOS */
    uint32_t	cmdsize;	/* sizeof(struct min_version_command) */
    uint32_t	version;	/* X.Y.Z is encoded in nibbles xxxx.yy.zz */
    uint32_t	sdk;		/* X.Y.Z is encoded in nibbles xxxx.yy.zz */
};

注释里就表明了是xxxx.yy.zz 的格式


#14

厉害了~~