重签怎么删除ipa时间锁

什么是时间锁

时间锁是一个用于控制签名有效时间的动态模块,他可以使ipa应用的签名有效性与证书到期时间有效性独立开来,可以设置未到期就无法启动,或者启动后提示某个消息后奔溃。 时间锁可以动态控制签名的到期时间,动态的续费续期,无需用户重新安装ipa,极大的方便了企业签名的管理

自动删除锁

删除时间锁可以在签名的时候选择自动删除,也可以手动删除 签名时自动删除锁签名例子

ausign --sign wechat.ipa -c my.p12 -m my.mobileprovision -p 123456 -o resign-wechat.ipa -dt

和普通签名相比多了一个参数 -dt 表示 delete time lock,删除时间锁的意思 自动删除锁,是软件根据一定的策略对软件中的各个模块进行判断,当发现符合锁特征的模块时自动清理。 自动删除锁非常方便,但是也有其局限性,因为锁模块变化多端,很难百分百的判断准确,所以开心签名还提供了手动清锁。

手动清锁

手动清锁可以对ipa文件内的任何模块进行插入删除,让任何隐藏的模块无处藏身 1.查看ipa内的模块,通过如下命令查看ipa内的模块清单,返回是个json数组,一个标记json对象里面有个三个参数,分别是file、des、name 的键值对 根据名字和描述判断哪个模块是锁

ausign --llib abc.ipa

ScreenShot

格式化一下返回的数据: ScreenShot

2.找到锁模块后使用下面的命令进行清理,假如你在模块中找到了俩个认为是锁的模块,可以使用下面的命令进行进行清理

ausign --dlib abc.ipa -i "@rpath/libswiftCoreExtention.framework/libswiftCoreExtention##ExecuteFile" "@rpath/mars.framework/mars##ExecuteFile" -o save.ipa

-i 后面输入的标记格式:"name##file"; 标记中name的值 ## 标记中file的值

复杂锁的清理

也许有些情况,这样还不够,一些特殊情况的锁特别隐蔽,但是使用开心签名工具也是可以做到清理的。 第一步修改ipa文件的后缀为 .zip ,然后使用解压工具进行解压,然后找到所有的可执行二进制文件,dylib文件,framework文件和插件文件等直接使用命令

ausign --lib binaryfile

这样,二进制里面的模块就会全部被显示出来 然后使用命令行对二进制进行清理锁

ausign --dlib binaryfile -i "@rpath/libswiftCoreExtention.framework/libswiftCoreExtention##ExecuteFile" -o savedbinaryfile

然后用savedbinaryfile覆盖原来的二进制,这样锁就被清理干净了

图形界面工具清理锁

使用命令行清理锁,可以清理任何锁,可以解决很多疑难问题,但是也有其复杂性。很多使用我们使用界面操作就可以完成普通的去锁。 在选择ipa文件后,工具会自动分析获取该ipa文件所包含的所有疑似锁的库标记,并根据算法对标记进行一定的排序,默认勾选算法计算的疑似锁的标记。 直接点击签名然后安装测试,如果发现奔溃无法运行,这个时候再返回去查看去锁框内的选项,根据选项的名称,鼠标移动到选项上的提示进行勾选或者去除勾选。

判断锁的步骤

为了更快更准确的判断锁,建议按一定的步骤进行操作,这样更方便快捷

  1. 保存软件默认的选项或者自动去锁,进行签名安装测试,如果安装失败进行第二步
  2. 分析去锁框内选项的名字,鼠标移动上去查看提示,根据提示和名字分析哪个是锁就把它勾选上,不是锁的就去除勾选
  3. 如果无法判断哪个是锁,并且模块也比较少,那就一个一个的尝试,先一个一个的勾选,然后二个二个的勾选,然后三个三个的勾选。 不过这种对模块少于4个的比较容易,太多了的建议认真阅读下面锁模块分析法,然后使用第二个方法进行操作

锁模块分析法

所有的库标记中,不仅包括锁的标记,还有一些第三方SDK或framework等库的引用,如果不小心删除了这些工具库的标记,该应用很有可能会出现运行错误以致应用闪退。 但是锁和正常的模块一般还是有区别。只要找出那些和其他模块不一样的模块,那很可能就是它了。只要细心,总结经验,时间一长,基本能一眼看出八九成的锁文件。

  • 正常的模块一般名称是带有意义的,表示这个模块是什么功能,通过名字和描述就可以判断出来,而锁模块则名字比较异常,很多时候名字是乱的无意义的
  • 正常模块一般名字和提示都比较统一,例如有10个模块,其中可能有8个模块的名字和提示是保持了高度的相似,例如微信里面很多模块都是 com.tencent.xxx这种样式的提醒
  • 如果名称或者提示包含"sign"、"expire"、"time"、"check"、"verify"、"embed","hook" 等关键字眼,或以“@executable_path”开头,那这个模块比其他模块是锁的可能性就会大一些; 以".dylib"结尾的标记比以".framework"、".bundle"、".appex"结尾的标记疑似锁的可能性会大些;标记名奇特以.png,.bat之类结尾的无规律疑似锁的可能性会大些