关于IAP的破解
介绍
大概在今年7月份,有俄罗斯黑客破解了苹果的应用内付费(In-App Purchases),设备在不越狱的情况下就可以免费获得来自苹果官网App Store里应用的收费道具。受影响的产品众多,包括著名的Angry Birds,切水果,Mega Jump, Pandora等。这里有一份受影响的著名的游戏应用列表。
正常的越狱行为还是比较复杂的,需要下载破解软件,并且操作进入DFU模式,所以大部分人并不能够方便地越狱。但该方案不需要越狱就可以破解应用内付费,给用户实施该行为提供了方便。
为了验证破解的有效性,我今天试了一下,确实能够直接绕开苹果的应用内付费就直接完成购买操作。而苹果也在它的官方文档上特别注明了该漏洞的存在,截图如下:
从该文档中我们可以知道,iOS6以下的所有设备(包括越狱或非越狱设备),都会受到该漏洞的影响。
攻击原理
我们知道通常的IAP购买行为,从逻辑上就是设备向App Store发起一个购买操作,App Store在验证过用户的密码确认身份后,扣费并返回购买成功的凭证,整个网络操作是通过SSL加密的。
该IAP破解方法,是让设备误以为另一个网站就是AppStore,而向它通讯,而这个假AppStore返回一个假的购买成功的凭证,这样就欺骗设备完成了购买。整个欺骗使用的手段包括:
- 用户给自己添加一个受信任的证书以完成SSL通讯的证书校验
- 设置一个伪DNS(域名解析服务)地址,把AppStore的域名指向假的地址。
应对措施
现在看来,暂时有效的应对方法是,将该交易凭证上传到我们自己的服务器上,然后让我们自己的服务器与AppStore进行验证,以确认该凭证是否是伪造的,然后将验证结果返回给设备。苹果的官方网站上也是这么介绍的。这样做麻烦的地方是,对于那些游戏和工具类应用,增加了服务器开发和维护的开销。
但是就象苹果自己也意识到的那样(如下图),既然破解者可以欺骗设备来和AppStore通讯,那么同样破解者从原理上,也可以欺骗设备同我们自己的服务器通讯,到头来,设备本身无论如何是无法知道自己的信息的真实性的。
对于这件事,我们只能期望于:因为我们的应用用户量不大,验证协议又不是通用的,所以破解者需要专门针对我们的通讯协议进行破解,这需要他本身有动力做这个事情,并且要花费他一些时间。所以可能他觉得做这个事情没什么挑战和意义,就不破解我们了。在这件事情上,“希望他不要破解”,好象也是我们唯一能做的事情。
乐观一点讲,AppStore上有上百万的应用,如果所有应用都采用服务器验证购买凭证,黑客一一针对破解,确实也太不可能了,所以这件事情还是很有必要的。另外随着iOS6的普及,该漏洞也将被修补掉,所以大家也不用过于悲观。
关于IAP的破解的更多相关文章
- In-App Purchase(iap)快速指南
点击IOS IAP APP内支付 Java服务端代码直接跳转到示例点击直接跳转到示例 iap简介 在应用中内嵌Store,在iOS应用中使用Store Kit framework来实现In-A ...
- IAP 破解漏洞验证
IAP支付有个漏洞,用户使用的可能是IAP Free 或者俄罗斯破解什么的,所产生的交易号:170000029449420 product_id:com.zeptolab.ctrbonus.super ...
- [转]iOS游戏如何防御外挂及IAP破解
http://www.j1f3.com/news/game/21371.html 今年3月初写过一篇<iO平台游戏安全小议>,到现今已有7个月了.在这段时间内,iOS平台上的安全问题也产生 ...
- NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解方法!
NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解 P89V51RB2/RC2/RD2是一款80C51微控制器,包含16/32/64kB Flash和1024字节的数据RAM. P89V ...
- STC系列STC10F芯片解密STC10L单片机破解复制技术
STC系列STC10F芯片解密STC10L单片机破解 STC10F12XE | STC10F12 | STC10F10XE | STC10F10解密 STC10F08XE | STC10F08 | S ...
- 苹果ipa软件包破解笔记
苹果的验证机制: Appstore上的应用都採用了DRM(digital rights management)数字版权加密保护技术,直接的表现是A帐号购买的app,除A外的帐号无法使用,事实上就是有了 ...
- 利用ZjDroid对 <捕鱼达人3> 脱壳及破解过程-转
http://blog.sina.com.cn/zihao2015 <捕鱼达人3> 刚出来不久,就被鬼哥Dump出来dex,随之破解也就轻而易举.一开始我用ZjDroid神器试验过,但是没 ...
- iOS应用内支付(IAP)的那些坑
本文转载至 http://blog.devtang.com/2013/04/07/tricks-in-iap/ 前言 udacity 中的在线课程 <How to build a startup ...
- Kali对wifi的破解记录
好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...
随机推荐
- Java 体系结构
Java体系结构包括四个独立但相关的技术: 当编写并运行一个Java程序时,就同时体验了这四种技术.运行流程如下: Java虚拟机的主要任务是装载class文件并且执行其中的字节码.Java虚拟机包含 ...
- [UI]实用案例--Shape绘制实用圆圈
Android允许通过xml定义资源,常见的事string,id,integer,dimen等,也可以定义一些图片资源,比如用来做几何的矢量图就非常好用,其中有许多的细节问题,具体需求可以再结合goo ...
- Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合
在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...
- ios摇一摇截屏代码
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- Android仿360手机卫士悬浮窗效果
请看下图: 首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速.好,我们现在就来模拟实现一下 ...
- python 定义类方法
定义类方法 和属性类似,方法也分实例方法和类方法. 在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身. 要在class中定义类方法,需要这么写: class Person( ...
- class.forname()用法 转
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...
- Codeforces Round #371 (Div. 2) - A
题目链接:http://codeforces.com/contest/714/problem/A 题意:有两个人A,B 给定A的时间区间[L1,R1], B的时间区间[L2,R2],然后在正好K分钟的 ...
- css -- 元素消失
元素从屏幕消失的方法: A:display:none B:opacity C:visibility D:text-intent:-10000em; E:margin可远可远了 F:position:a ...
- 解决:未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”
使用nuget管理程序包,有可能在不同时间安装不同版本的Entity Framework:在项目创建初期安装的是6.0.0.0版本,后来添加的类库,安装了6.1.1版本,所以出现这个问题. 解决办法: ...