iOS二进制和资源包的自检
因为现在做的是企业版的APP,不能保证用户不越狱,也不能保证有些用户喜欢自己修改ipa包里的资源文件,比如更换一些资源图片。因此,我们有必要在请求报文中,增加正版应用的二进制和资源文件的标识,让服务器知道,此请求是否来自正版的未经修改的app。
在沙盒中我们可以读到自己程序的二进制,也可以读到资源文件签名文件,我们可以对其取md5值得到一个标记字符串,然后发给服务器,对比存储在服务器段的MD5值是否正确,如果APP被修改就禁止继续使用,杀掉自己的进程。
下面是获取自己APP的二进制、资源文件和签名文件的获取方法。因为从iOS8开始沙盒机制有所变化,文稿和资源文件分开在不同的路径,而且文稿是一个动态的路径,所以获取方法要区分系统版本。
下面贴代码:
定义加密类型(MD5 SHA1 SHA512)

封装加密方法

获取资源包的加密后字符串

获取签名证书加密后的字符串

可以根据自己的需要把这些信息发送给服务器进行判断,现在我们做的是APP版本号、iPhone版或iPad版再加上面两条字符串发给服务器。
外加自动杀掉自己进程的方法:

补充:突然发现在打包之前clean一下,获取到的sourceData会改变,现在的做法是增加一个弹出的alertView,title是获取的sourcedata的md5值,每次打包前clean一次,然后run一次,通过弹出的提示手动记录一下md5值,然后注释掉alertView的代码,这时候再打包,注意这次就不要clean了,只改变几行简单的代码不会影响APP的功能也不会改变appdata和sourcedata。(如果发现其他更好的方法会及时更新)
iOS二进制和资源包的自检的更多相关文章
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- iOS - 集成Bundle资源文件包
1.Bundle 文件 Bundle 文件,简单理解,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个 Bundle 文件.方便在其他项目中引用包内的资源. Bundle 文件是 ...
- iOS 静态库生成(引用第三方SDK、开源库、资源包)
一.静态库创建 打开Xcode, 选择File ----> New ---> Project 选择iOS ----> Framework & Library ---> ...
- 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹
简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...
- 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面
简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码, ...
- 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑
简介 以前写过一个补丁更新的文章,此处会做一个更精简的最小化实现,以便于集成.为了使逻辑具有通用性,将剥离对AFNetworking和ReativeCocoa的依赖.原来的文章,可以先看这里: htt ...
- 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...
- 实现iOS图片等资源文件的热更新化(零): 序
必要的序 以后在写系列文章,准备把基本的规划和动机等,单独作为一个小的序言部分给独立出来.序言部分,可以较为完整地交待系列文章的写作动机,所展示的编码技术可能的应用场景等.个人,我还是比较看重文章或者 ...
- iOS多线程开发资源抢夺和线程间的通讯问题
说到多线程就不得不提多线程中的锁机制,多线程操作过程中往往多个线程是并发执行的,同一个资源可能被多个线程同时访问,造成资源抢夺,这个过程中如果没有锁机制往往会造成重大问题.举例来说,每年春节都是一票难 ...
随机推荐
- ASP.NET实现IE下禁用浏览器后退按钮办法
在page_load方法里面增加如下代码: Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Parse("2010-1 ...
- SQL Server -SET ANSI_NULLS
当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...
- FFMPEG视音频解码【一】
多媒体的时代,得多了解点编解码的技术才行,而ffmpeg为我们提供了一系列多媒体编解码的接口,如何用好这些接口达到自己所需要的目的,这也是一门重要的学问. 要是了解得不够,总是会遇到一堆又一堆问题:网 ...
- php常用的header头
<?php /** * php常用的header头设置... */ header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not ...
- 我和Python的第一次亲密接触 - 零基础入门学习Python001
我和Python的第一次亲密接触 让编程改变世界 Change the world by program 小甲鱼经常说,学习一门编程语言就是要深入其中,要把编程语言想象为你的女朋友你的情人,这样你学习 ...
- LinqToSql增加、修改、删除---(转载)
LinqToSql ,EF:外键实体的CRD 2011-03-06 21:56:26| 分类: linq | 标签:编程 |字号 订阅 接触LinqTosql是很久的事情了, ...
- SQL Serverf 索引 - 索引压缩 、附加特性 <第十篇>
一.索引压缩 数据和索引压缩在SQL Server2008被引入.压缩一个索引意味着将在一个页面中获得更多的关键字信息.这可以造成重大的性能改进,因为存储索引需要的页面和索引级别更少.因为索引中的键值 ...
- C# 获取当前应用程序的绝对路径支持asp.net
Asp.net在类库中获取某文件的绝对路径.这个问题在初学的时候就经常碰到过,经常是查了忘,忘了查.浪费了大量的今天专门写个文章,以后到这里查.有时间顺便记得研究下这个东西. 在主程序目录就不说了 ...
- jQuery的入门与简介《思维导图》
<初学者请各位高手指点指点> jQuery是继Prototype之后又一个优秀的JavaScript库,在JavaScript基础上我知道了jQuery拥有强大的选择器, 出色的DOM操作 ...
- 健康管理app要注意哪些要点
健康管理app现在变得越来越热,越来越多的垂直领域的加入,让健康app的市场逐渐扩大,但移动健康管理app仍有许多缺陷需要解决.健康管理并不是治病,而是让健康的人更好的保持身体健康状态,让慢性病高风险 ...