动态库注入后重签运行在非越狱设备上所走的弯路

我是按照参考链接的Demo,动手尝试的。中间过程各种碰壁。别人分享的永远是别人的,自己手动做一遍成功了才是自己的。每天上班抽空搞一下,终于解决了这个问题。现在动态注入成功,并且可以运行在非越狱设备上,而且点击触发事件是预期修改后的事件。历尽千难万阻,成功的那一刻难以抑制心中的喜悦。
大概说一下,注入成功,重签打包,安装运行闪退的原因。mmap() 一般是证书签名问题。

参考Demo:http://blog.csdn.net/chsadin/article/details/51613197

个人心得:
1、原包app必须脱壳,不然会报错类似这个“ Unable to obtain a task name port right for XXX”。查看是否加密命令 otool -l AppRe | grep crypt
cryptid 1表示加密。
2、动态库里面自己手动建立一个entitlements.plist文件,证书 必须与重签的证书名一致(developer或者distributer都可以)。签名的详细说明如下:
http://blog.csdn.net/showhilllee/article/details/48494087
3、如果是企业级的证书,必须要有OU组织单位。查看命令 codesign -dv AppRe.app。如果是Teamidentifier 是not set,就需要重新生成新的根证书和签名。
4、dylib必须重签名
5、使用了iOS App Signer这个重签工具,是开源的,可以调测代码。iReSign不知道怎么回事,老是失败。
上面 是主要的一些问题,实际过程还有很多细节。每个人碰到的可能也不一样。这里分享出来希望大家少走一点弯路。

第5条里面的iOS App Signer 好像还不支持带watch等扩展的app,至少像微信还不支持,前几天我用的时候。

膜…

大神,我最近也在学习动态库注入这块的知识,但是动态库注入之后,程序总是闪退,有几个问题弄不明白,想请教一下,(1)如果在越狱设备上运行注入动态库的程序,动态库和目标程序也必须签名吗?(2)我用AdHoc 证书签名可以吗,如果用adhoc签名的话是不是设备必须添加到开发者账号中(我的是越狱设备)?(3)是不是只要动态库注入了程序,用otool -L TargetApp 就一定能看到自己注入的动态库?希望大神百忙之中抽出时间给小弟点播一下。

是的,扩展是单独的签名,可以把这个扩展删除掉,再打包签名

我也不是大神,只是最近看这块蛮有意思的,就动手尝试一下。越狱设备有个禁止签名校验,可以跳过签名。AdHoc应该也是可以的。我用developer和distributer都可以的。AdHoc只是distributer里面的一种远程发布。使用machOview可以查看动态注入的内容。

请问 framework动态库 可以吗 我成功在越狱手机上成功了 但是 非越狱闪退。 这个 framework动态库 还需要另签名吗 。
还有我看到别人注入动态库 既不是dylib后缀的也不是 framework后缀的 没有后缀名 这是什么动态库?我即是加了dylib 或者framework后缀 也不能像正常的dylib 以及freamwork那样 可以运行 打开。
此外 我使用 optool 去除这个动态库 (功能是启动弹窗) 后 签名打包 手机上居然闪退了 这是什么原因 按道理不会呀