Mach-O 文件修改造成程序无法启动

狗神在这篇文章中提到了修改Mach-O的__RESTRICT/__restrict这个section,但是我在iOS9.0.2 的越狱机器上也按照这种方式修改了,但是修改完成后的Mach-O文件覆盖原有的文件,每次打开APP程序会闪退。
自己分析了一些原因:1.iOS签名的问题造成了这种情况。2.修改Mach-O 造成了文件损坏。
针对第一种情况,我发现了一些情况,
1.如果是Mach-O导出到电脑本地,然后将手机中的文件覆盖掉(手机中的文件没有删除),没有问题。
2.如果将原来的Mach-O文件删掉,然后倒入在电脑上备份的文件,程序仍然闪退。

那么我想问问,因为在修改Mach-O文件的时候狗神提到了该怎么修改。我想问问狗神@snakeninny 您用的是iOS几的系统?APPSync是哪个源里的哪个版本?如果能绕过签名这块,就可以确定问题的所在,或者就是确定一下是因为修改文件造成的文件损坏。

1 个赞

你有没有给可执行文件赋权限啊

没听说过赋权啊,怎么搞?请赐教。

您说的是chmod 这个命令么?

0、__RESTRICT/__restrict,应该是__restrict/__RESTRICT,然后修改成__RESTRICT/__RESTRICT
1、确认Appsync没问题
2、cd到app目录,查看matcho文件是否有执行权限,如果没有,手动加上
3、签名问题,重签试试
4、还有问题就不知道了

第0条,这个没问题,已经修改成为其他字符串
第1条,我曾经将一些图片资源删除,或者更改为其他的图片,没有出现程序无法进入的情况,唯独执行文件如果这么做会出现
第2条,回头我会看一下,今天下午不小心动了系统内核的东西,不得一升级到了9.1目前无法越狱
第3条,现在使用的是Xcode7.0.1 好像重签名的工具已经不好用了,不知道有没有其他的选择。
第4条,如果搞定之后会在帖子中回复大家,供大家参考。非常感谢。

应该是破坏了原binary的签名,被iOS检测到所导致的。装个最新的AppSync试试?

狗神当时写防止tweak有高招的那篇文章的时候,使用的是iOS几?

从

/var/mobile/Applications/DCDC3F9D-227A-414F-B796-54AA9DB0F39A/imeituan.app/imeituan

这个路径来看,应该是iOS 7

好的,感谢狗神~从路径看确实是iOS7 的。

我想问下,如果是安装最新的AppSync的话,被破坏的签名,iOS设备上也能正常跑?不需要重签?一般越狱设备都安装AppSync的,我的设备也都安装的,但是还是因为签名问题闪退,重签了就没问题

请问楼主使用的mac那个系统版本进行的重签名?好像10.10 已经不好用了。

跟系统有关系么?我是10.10.5,下载arm架构的ldid

我晓得了。我使用的是 Xcode 中的 以前有个ldid工具,后来不好使了。

我也是一不小心升级到9.1就傻在那了

你好,我也遇到这个问题。请问怎么重签名。是 ldid -s BinaryName 吗?我这样执行了也不行。

新版本的xcode已经不好使了。

那用的哪个版本的?

当时用的也是7.x

  1. 用iHex编辑二进制文件。
  2. ldid改为使用书中说明的放到theos/bin目录下的。
  3. ldid -S BinaryName 。 S大写。

重新弄了下,就好了。

貌似和Xcode没直接关系。