关于-sectcreate的文件路径


#1

我在XCode -> Other Link Flags,加入“-Wl,-sectcreate,__Segment,__section,/path/to/file”,想把file加入二进制文件,但是这个“/path/to/file”具体要怎么写,我的例子是把file放到项目目录下,默认会打包进app包里,直接写文件名的话会报错,前面加上@executable_path或者@loader_path都不行,报“can’t open -sectcreate file”的错误。
另外,我只是在学习和实践这种自定义section的操作,想请问在正向或者逆向开发中,有什么实际的用法吗?
麻烦各位指点一下,谢谢了🙏


#2

资源保护。早期我会使用__RESTRICTED配合这个trick把重要资源放里面阻止新手们暴力改段名绕过

编译机里的绝对路径或相对路径。跟@executable_path或者@loader_path无关


#3

谢谢回复!
1、【编译机里的绝对路径或相对路径】:如果是包里的文件,改为“-Wl,-sectcreate,__segmentName,__sectionName,$(PROJECT_DIR)/ProjectName/fileName”就ok了
2、资源保护是说,如果别人把__RESTRICT段改名,就获取不了__RESTRICT段里面的资源了,是这个意思吗
3、这篇文章最后一句话说:“Adding your own file there can be useful if you plan on validating that your binary is correctly signed and not modified.” 跟你说的资源保护是不是一个道理,如果读不到文件说明该段被改名了


#4

利用 getsectdata*系列API来读取,如果改了名就会取不到

这是因为Xcode生成的变量被展开了


#5

明白了!谢谢🙏!