发布dnf补丁如何生效后,什么时候可以在app上生效

注册 | 登录
相比于乔布斯,我更想成为的是乔纳森·艾夫
从零开始学运营,10年经验运营总监亲授,2天线下集训+1年在线学习,做个有竞争力的运营人。
热补丁与增量更新技术在APP中是比较常见的,作为移动端产品的产品经理,应该对这些技术有一些大致的了解。
热补丁技术
热补丁修复技术可以做到线上推送一段修补 BUG 的代码,终端无需更新版本直接运行,可以做到在用户无感知的情况下,修复问题。
该技术避免了当App发布之后,突然发现bug需要进行紧急修复时需要完成的重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装等一系列复杂的操作。
热补丁修复技术基于的是android dex分包方案。我们都知道andriod的安装文件是APK文件,APK文件中包含了软件的信息(版本号等)、dex文件(就是程序员的代码)、res文件夹(设计师的文件,包括切图、动效等)。
那么为什么dex分包呢?当一个APP的功能越来越复杂,代码量越来越多时程序的编译会出现错误,会出现APK文件无法安装的情况。出现这些问题主要是因为一个dex文件最多只支持65536个方法,如果一个复杂的APP全部写在一个dex文件中,肯定会超载。所以要对dex进行分包,dex文件就是代码的集合。
热补丁原理,简单的概括一下,就是把多个dex文件塞入到APP的Classloader(通过这个类来实现dex的分包,大家都知道什么叫类吧~)之中。每个dex文件是一个对象,多个dex文件排列成一个有序的数组,当程序执行的时候,会按顺序遍历dex文件,然后从当前遍历的dex文件中找相应功能的类,如果找则返回,如果找不到从下一个dex文件继续查找。
那么这样的话,可以在这个数组中的第一个元素放置格式为.jar的文件,里面包含修复过功能的类,这样的话,当程序遍历的时候,修复过功能的类就会被率先查找到,从而替代有bug的类。
原理如下图:
iOS主要是使用JSPatch来实现热补丁修复,在项目中引入JSPathc,然后在发现bug时下发JS脚本补丁,替换原生方法,以此实现无需更新APP即时修复bug。
主要实现流程:当客户端出现bug时,iOS开发人员需要开发一段JS脚本用于修复bug,脚本开发完成后,服务端开发人员根据iOS开发人员提供的JS脚本部进行一定的安全策略部署服务端脚本,iOS客户端通过脚本版本检测接口,判断是否需要下载JS脚本,下载脚本成功后,进行加载,运行,进而修复APP的bug。
APP端流程如下:
其中,客户端与服务端在获取JS脚本时会进行安全校验,防止过程中被攻击替换代码,安全校验的简单流程:a.服务端对JS脚本文件生成一个MD5(文件的唯一标识)值并加密——b.将加密的MD5值与JS脚本传给客户端——c.客户端对拿到的脚本文件计算MD5值,且对加密的MD5值进行解密——d.客户端对比计算出的MD5值与解密后的MD5值——e.两个MD5数值相等则通过校验。
热补丁技术不仅可以用来修复bug打补丁,还可以在线更新代码添加新需求哦!
增量更新技术
增量更新是指在进行更新操作时,只更新需要改变的地方,不需要更新或者已经更新过的地方则不会重复更新。也就是,只将App中有发生改变的部分发送给用户,而不是每次都重新下载一个完整的安装包。
生成差异包。将 App 的最新安装包(V2)与历史发布版本的安装包(V1)进行差分对比,得到一个差异包(V2-V1)。
下发差异包。当某个老版本(V1)的 App 开始检查更新的时候,需要将自己当前的版本信息发送给服务端,然后服务端判断后,选择对应的差异包(V2-V1)下发。
合成新包。
校验完整性。校验当前历史包的Hash值以及差异包的Hash(哈希值是一段数据唯一的数值表示形式)值,合成新包后,也要校验新包的Hash值,只有这三个Hash值都与预期匹配,才可以确认新包是完整的。
增量更新的注意点:
增量更新是以两个应用版本之间的差异来生成补丁的,无法保证用户每次及时升级到最新,所以必须对所发布的每一个版本都和最新的版本作差分,以使所有版本的用户都可以差分升级,这样操作较为繁琐,不过可以通过脚本批量生成。
增量更新成功的前提是,用户手机端必须有能够被拷贝出来且与服务器用于差分的版本一致的APK文件,这样就会造成一些情况,例如,系统内置的APK无法获取到,则无法进行增量更新。
以上,就是对热补丁修复技术与增量更新技术的小总结,希望对大家能有所帮助。
作者:流年,互联网产品设计师,4年互联网产品设计经验。
本文由 @流年 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自unsplash,基于CC0协议
赞赏是对原创者的最大认可
赞赏4人打赏
收藏已收藏 | 24赞已赞 | 2
相比于乔布斯,我更想成为的是乔纳森·艾夫
产品经理群
运营交流群
数据分析群
文案交流群
Axure交流群
关注微信公众号
大家都在问
6个回答7人关注
13个回答18人关注
12个回答11人关注
17个回答62人关注
15个回答23人关注
21个回答72人关注您需要通过验证再能继续浏览 3秒后开始验证
丨 粤ICP备号-10 丨 新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!
(C) Joyslink Inc. All rights reserved 保留所有权利博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)发布之后也会有补丁更新吧,还有规则更新吧【黑暗之魂吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:70,543贴子:
发布之后也会有补丁更新吧,还有规则更新吧
最后也许会更新到1.09所以八向还是有希望的。
黑暗之魂,3D硬派格杀双端网游,万人攻城,热血PK,称霸勇者大陆暗黑系老玩家推荐,今日公测,在线注册,送大礼包!
八向翻滚真的很重要吗?我通了两遍也没发现有什么不对劲的
魂一的敌人速度很慢,除了拳皇基本上没有算得上疯狗的敌人吧,四向完全够用了。
八向翻滚到不是特别需要,反正受死版玩了这么久也没觉得别扭。只希望别动不动砍法术武器,要是飞沫关刀这种武器砍了那就很气了
要什么8向.jpg
v大已经说了,全向翻滚,锁定时可以朝任何方向奔跑和翻滚。不过这是他拿到重制版的时候录的视频里讲的
八向翻滚主要是pvp吧如果数据不变咱的置顶还能活好久
风向又变了?之前还指望一个八向的现在...
改了就不是魂1了,不要想了
贴吧热议榜
使用签名档&&
保存至快速回贴&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
如何对iOS App进行打补丁和重新签名
摘要:有没有想过在非越狱设备上运行修改后的iOS二进制文件?比如,你可以使用该技术插装app,以进行动态分析。又或者你需要进行GPS欺骗,从而可以在锁区玩Pokemon,但又担心越狱检测。福利来了,你可以按照以下过程对修改后的应用程序进行重新签名,然后便可在自己的设备上运行该应用程序。注意,该技术仅适用于非FairPlay加密二进制文件(从应用商店获取的app均为FairPlay加密)。苹果的配置和代码签名系统本身就让人有点晕头转向,所以,对app进行重新签名着实不易。只有在配置文
有没有想过在非越狱设备上运行修改后的iOS二进制文件?比如,你可以使用该技术插装app,以进行动态分析。又或者你需要进行GPS欺骗,从而可以在锁区玩Pokemon,但又担心越狱检测。
福利来了,你可以按照以下过程对修改后的应用程序进行重新签名,然后便可在自己的设备上运行该应用程序。注意,该技术仅适用于非FairPlay加密二进制文件(从应用商店获取的app均为FairPlay加密)。
苹果的配置和代码签名系统本身就让人有点晕头转向,所以,对app进行重新签名着实不易。只有在配置文件和代码签名头完全正确的前提下,app才能在iOS中运行。这要求我们了解很多概念——不同类型的证书、BundleID、应用程序ID、团队标识符,以及如何使用苹果的构建工具将它们绑定在一起。总之,让iOS运行未使用默认方式(XCode)构建的特殊二进制文件可谓一大挑战。
我们需要使用的工具集包括optool、苹果的构建工具及一些shell命令。要复现以下步骤,请下载 UnCrackableiOS App Level 1 。我们的目标是使无法破解的应用程序在启动时加载FridaGadget.dylib,这样我们便可使用Frida来插装它。
获取开发人员配置文件和证书
配置文件 是由苹果签名的、将一个或多个设备上的代码签名证书列入白名单的plist文件。换言之,这是苹果明确允许你的应用程序在某些上下文中运行,比如在选定设备的调试模式下。配置文件还列出了授予你的应用程序的权限。代码签名证书包含将用于进行实际签名的私钥。
下面提供了两种获取证书和配置文件的方法,具体使用哪一种要看你是不是已注册的iOS开发人员。
方法一:使用iOS 开发人员帐户
如果你之前使用Xcode开发和部署过app,那你已经拥有一个代码签名证书。使用安全工具列出你现有的签名身份:
已注册开发人员可以从苹果DeveloperPortal获取配置文件。这需要首先创建一个新的App ID,然后发布一个配置文件——从而让该App ID可以在你的设备上运行。对于重新打包的目的,选择什么App ID并不重要 – 你甚至可以重新使用一个现有的App ID。重要的是要有一个匹配的配置文件。确保你创建的是开发配置文件而不是分发配置文件,因为稍后需要将调试器附加到应用程序。
在下面的shell命令中,作者使用的是与其公司的开发团队相关联的自己的签名身份。作者创建了app-id“sg.vp.repackaged”,以及一个名为“AwesomeRepackaging”的配置文件,这便生成了一个名为“AwesomeRepackaging.mobileprovision”的文件——运行示例时改为你自己的文件名。
方法二:使用常规的iTunes 帐户
即使你不是付费开发人员,苹果也会给你分发一个免费的开发配置文件。你可以使用你的常规苹果账户并通过Xcode获取配置文件,只需要创建一个空iOS项目,然后从app容器提取embedded.mobileprovision,此过程详情请参见 ncc博客 。
获得配置文件后便可使用安全工具检查其内容。除允许的证书和设备外,在配置文件中还可找到授予app的权限。稍后的代码签名需要这些,所以按以下所示将这些提取到一个单独的plist文件。还要看一下文件的内容,检查一下是否有任何异常。
注意应用程序标识符(App ID),其是团队ID(LRUD9L355Y)和Bundle ID(sg.vantagepoint.repackage)的组合。该配置文件仅对具有此特定app id的应用程序有效。“get-task-allow”键也很重要——当设置为“true”时,允许其他进程(比如调试服务器)附加到应用程序(因此,在分发配置文件中应设置为“false”)。
为了使我们的应用程序在启动时加载一个附加的库,我们需要通过一定方法将额外的加载命令插入到主可执行文件的Mach-O头中。我们使用optool来自动化这个过程。
我们还将使用ios-deploy,这个工具可以让我们在不使用Xcode的情况下部署和调试iOS应用程序:
要遵循以下示例,你还需要FridaGadget.dylib:
除了上面列出的工具,我们还要使用OS X和Xcode附带的标准工具(确保你已安装Xcode命令行开发工具)。
打补丁、重新打包及重新签名
现在要步入正题了。IPA文件实际上是ZIP文件,所以要使用任意一款zip工具解压。然后,将FridaGadget.dylib复制到应用程序目录中,然后使用optool将加载命令添加到“UnCrackable Level 1”二进制文件。
这种明显的改动无疑会使主可执行文件的代码签名无效,因此这不能在非越狱设备上运行。你需要替换配置文件,然后使用配置文件中列出的证书对主可执行文件和FridaGadget.dylib进行签名。
首先,我们将自己的配置文件添加到包中:
接下来,我们需要确保Info.plist中的Bundle ID与配置文件中指定的匹配。这样做的原因是 codesign 将在签名期间从Info.plist读取Bundle ID -错误的值将导致签名无效。
最后,我们使用codesign工具对这两个二进制文件进行重新签名:
安装并运行应用程序
一切已经准备就绪,可以运行修改后的app了。按照以下方式在设备上部署并运行app。
如果一切顺利,那么应用程序应该在调试模式下在设备上启动——附加有lldb。Frida现在也应该能够附加到应用程序了。你可以使用frida-ps命令来验证这一点。
现在便可使用Frida像平常一样插装app了。
如果出现错误(通常会发生错误),那最有可能是因为配置文件和代码签名头之间不匹配,在这种情况下,最好阅读官方文档并了解整个系统的工作原理。
参考来源: http://www.vantagepoint.sg/blog/85-patching-and-re-signing-ios-apps
*本文作者:华为未然实验室,转载请注明来自Freebuf.COM
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
如何对iOS App进行打补丁和重新签名相关信息,包括
的信息,所有如何对iOS App进行打补丁和重新签名相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International

我要回帖

更多关于 appsync越狱补丁 的文章

 

随机推荐