修改mach-o文件__restrict后闪退

修改mach-o文件__restrict后闪退的问题,
已经安装appsync 系统是ios8.3这个是修改后的

有知道原因的么

1 个赞

crash信息是什么?

我也遇到这个问题 提示“exit abnormal via sigal” 是不是还是签名失效导致的? @snakeninny na

我也遇到过类似的问题,个人感觉是appsync 没有起作用。楼主可以这样验证一下:

  1. 下载原有文件,能正常打开。
  2. 通过pp助手一类的,打开执行文件目录。
  3. 将执行文件导出,然后原有文件删除,再把导出的文件导入,如果出现闪退的情况,说明appsync没有起作用。
    @snakeninny,不知道狗神的appsync 是用的哪个安装源里的?能不能共享出来啊。还有,狗神你的越狱手机是什么型号?系统版本是多少?

@loary_fly @hail
我的iOS 9没有装AppSync,iOS 9的AppSync还没出来;
系统就是iOS 9.0.2,用盘古越的

感谢狗神~~,你在另外一篇文章中提到过AppSync 这个工具,也是说修改苹果的mach-o 文件的,关于美团的一个修改,当时是不是用过AppSync 这个工具,还是说只是向大家提一下修改之后下一步的方向是什么?

AppSync的作用就是把iOS上的签名校验函数给hook掉,让iOS不对app做签名校验了,其实是降低了iOS的安全性

试了好几个源 Appsync都没有起作用,都闪退。8.1.3的系统

还有一种思路,在dyld中,内部自己实现了一个字符串对比的函数,可以hook那个函数修改内部逻辑实现,把字符串内部对比函数修改掉。但是我手上现在就一个越狱设备,前一个越狱设备因为修改了dyld的mach-o 文件重启的时候变砖,被迫刷到了最新版本,所以不敢轻易尝试。

需要把AppBinary拿到Mac上 ldid -S AppBinary 重新签名。
ldid 用书上 theos/bin里的。

换了好几个ldid还是闪退

an 13 23:08:49 liangyongs-iPhone kernel[0] : Sandbox: hook…execve() killing pid 17209: application requires container but none set
Jan 13 23:08:49 liangyongs-iPhone com.apple.xpc.launchd[1] (UIKitApplication:com.qunar.iphoneclient8[0x7d64][17209]) : Service exited due to signal: Killed: 9
Jan 13 23:08:49 liangyongs-iPhone assertiond[113] : Unable to obtain a task name port right for pid 17209: (os/kern) failure (5)
Jan 13 23:08:49 liangyongs-iPhone SpringBoard[14715] : Unable to register for exec notifications: No such process
Jan 13 23:08:49 liangyongs-iPhone SpringBoard[14715] : Unable to obtain a task name port right for pid 17209: (os/kern) failure (5)
Jan 13 23:08:49 liangyongs-iPhone SpringBoard[14715] : Unable to obtain a task name port right for <FBApplicationProcess: 0x15f89af0; com.qunar.iphoneclient8; pid: 17209>
Jan 13 23:08:49 liangyongs-iPhone SpringBoard[14715] : Application ‘UIKitApplication:com.qunar.iphoneclient8[0x7d64]’ exited abnormally via signal.

试试书上这个呢 http://joedj.net/ldid

我用书上的ldid签名后依旧闪退。。。

8.3的系统确实还是闪退。但是又不能用ldid来重新签名,APP里用keychain,重新签名后说不能访问keychain了

我是7.1.2 …也是一样

找到machoview的源码:https://github.com/gdbinit/MachOView
然后自己根据exception调试下白

@snakeninny 狗神,修改__RESTRICT/__restrict后,我使用iphone5s,ios8.1系统,只要是安装了appsync就可以直接安装没有进行签名的ipa文件并正常打开.ios8.4以上系统(ios8.2-ios8.3没试过),就必须要重签名才能安装、正常打开App,如果没有重签名,只能安装成功,打开APP就会闪退.有没有办法做到在高系统上不用重签名就可正常安装、打开?

签名就是为了防篡改的,你篡改了但是不重签名,不是正好掉进苹果的防护机制里去了么,除非你把这个防护机制给干掉(即安装AppSync)

1 个赞

他的意思有可能是高版本的装了appsync也不行,因为他说了低版本装了appsync就可以,

@snakeninny 我想说的是:我篡改后,安装AppSync,去把防护机制给干掉,但并不是所有的手机系统都好使.在高版本上(我用的是iOS8.4系统,iphone5s.)安装AppSync,可以成功安装ipa,但是打开APP就闪退.我也试了好几个版本的AppSync都是这样. iOS8.1系统的安装AppSync没有此问题.