我有一个ARMv7 Mach-O可执行文件,我想在其上修补二进制报头中的某个段,以防止DYLD注入。

在第3点下的更多信息可以防止戴假物的注射。 TL; DR带有__restrict段的__RESTRICT二进制标头节可防止在iOS上进行DYLD注入。

不幸的是,我不确定如何正确修补文件。我是简单地用零填充负责LC_SEGMENT的文件偏移量,还是将其完全删除(意味着删节并因此更改文件大小,并且可能会破坏偏移量?)?
马耳他

#1 楼

该工具声称可以移动和删除加载命令。可能值得一看。

#2 楼

在任何Linux中,都可以使用“ strip”命令从ELF文件中剥离一段内容,这很容易(我也曾在OSX中打赌,尽管我自己从未尝试过)。 >
strip -R __restrict


应该可以解决问题

评论


问题是关于Mach-O,而不是ELF。 OS X条不删除任何部分。

–伊戈尔·斯科钦斯基♦
16 Dec 14'在11:30

@IgorSkochinsky明显错误。请参见此处的手册页(unix.com/man-page/osx/1/strip)和-R参数:-R filename删除文件名中列出的全局符号的符号表条目。该文件与上面的-s filename选项具有相同的格式。此选项通常与保存某些符号的其他选项(-S,-x等)结合使用。

– Ishay Peled
16年15月15日在16:15

同时检查-c标志

– Ishay Peled
16年15月15日在16:15

就像您引用的那样,-R删除符号,而不删除节(这不是GNU条)。至于-c,尽管它确实删除了部分,但生成的文件只能用于链接(并且您无法指定要删除的内容)。也许我应该说“不执行用户指定的节删除”。

–伊戈尔·斯科钦斯基♦
16 Dec 15'在18:15

伊戈尔(Igor)是对的,苹果公司的产品条无法删除部分。 -R删除符号,-c删除所有部分(如果我没看错的话)。

– Timmmm
18 Mar 5 '18 at 13:50