Jaf*_*iff 2 macos assembly objective-c
我有一个签名的mac app可执行文件.我初始化NSMutableData了代码签名可执行文件的内容.然后我修改了可执行文件的一部分,并保存了修改后的可执行文件.当我尝试使用此修改后的可执行文件运行原始应用程序时,应用程序崩溃了.
崩溃日志是,
System Integrity Protection: disabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (Code Signature Invalid)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace CODESIGNING, Code 0x2
Run Code Online (Sandbox Code Playgroud)
从崩溃日志中可以清楚地看到它由于无效的代码签名而崩溃.我没有应用程序的源代码,我只是想修复一些人的旧应用程序中的一些错误.
所以我的问题是如何在目标c中删除二进制代码签名?
对于所有道德传教士来说,感谢能够彰显我的生活并展现生命的道德道路.
根据我的说法,它根本没有完整的文档记录,但您可以通过以下方式删除代码签名:
codesign --remove-signature appName
Run Code Online (Sandbox Code Playgroud)
替代方式:
修补解密文件(删除LC_CODE_SIGNATURE)------------------------------
在继续之前,请确保已将文件变薄(ditto --arch i386).
要删除代码签名,您需要执行以下步骤:注意:Intel Mach-O二进制文件以0xCEFAEDFE开头PPC Mach-O二进制文件以0xFEEDFACE开头
修改加载命令的数量(从偏移量0x10/16开始,4B大小).
如果加载命令是例如0x2C减去0x1 - > 0x2B.