关于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. ...
随机推荐
- hdu 4274 2012长春赛区网络赛 树形dp ***
设定每个节点的上限和下限,之后向上更新,判断是否出现矛盾 #include<cstdio> #include<iostream> #include<algorithm&g ...
- 在ASP.NET 5中读取配置文件
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在ASP.NET 5中摒弃了之前配置文件的基础结构,引入了一个全新配置文件系统.今天推荐的文 ...
- 笔记本电脑关闭小键盘(即打字按P出现星号键)
开关方法:Fn + NumLk (联想电脑的NumLk 一般为F8,其他电脑自己在键盘找找罗)
- 偷师--先留着。。ssh,nginx,防火墙相关命令
- MySQL中的SQL语言
从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 :CRE ...
- C#多线程编程总结
VS2008.C#3.0在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在W ...
- maven junit 单元测试插件配置
单元测试插件配置 pom.xml中增加 <dependency> <groupId>junit</groupId> <artifactId>junit& ...
- PHP 设置代码执行时间
<?php ini_set('max_execution_time', '0'); set_time_limit(0); ?>
- Y86模拟器安装
Y86模拟器安装 这周需要学习Y86下的指令集开发,Y86和x86可以说是孪生兄弟,但是还是存在着一些小的差别.接下来介绍如何进行linux-debian平台下的Y86模拟器安装. 虚拟机VMware ...
- 转:delphi 删除指定文件夹下所有文件
function TFtpContentThd.DeleteDirectory(NowPath: string): Boolean; var search: TSearchRec; ret: inte ...