iOS平台游戏安全之IPA破解原理及防御(第三弹)
http://www.freebuf.com/articles/wireless/6068.html
在博客上谈过了iOS游戏的内购安全,存档安全及内存安全。其实还有一个很泛滥但被视为鸡肋的问题,即iOS IPA破解问题。因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之后就会免费,所以对IPA从只能在购买者设备安装变成可免费到处安装并不关注。
2. AppCake代表软件:CrackNShare
3.KulApps 北美
4. iDownloads 俄国
5. iGUI 俄国
第一步:获得cryptid,cryptoffset,cryptsize
cryptid为加密状态,0表示未加密,1表示解密;
cryptoffset未加密部分的偏移量,单位bytes
cryptsize加密段的大小,单位bytes
第二步:将cryptid修改为0
第三步:gdb导出解密部分
第四步:用第二步中的解密部分替换掉加密部分
第五步:签名
第六步:打包成IPA安装包
通过分析源码,我们可以知道,整个破解过程,除去前期检测依赖工具是否存在(例如ldid,plutil,otool,gdb等),伪造特征文件,可以总结为以下几步:
3.可执行文件发生的变动非常大,但最明显的事是cryptid的值发生了变化
leetekiMac-mini:xxx.app leedani$ otool -l appname | grep "cmd LC_ENCRYPTION_INFO" -A 4cmd LC_ENCRYPTION_INFOcmdsize 20cryptoff 8192cryptsize 6053888cryptid 0
--cmd LC_ENCRYPTION_INFOcmdsize 20cryptoff 8192cryptsize 5001216cryptid 0
plutil -key 'SignerIdentity' -value 'Apple iPhone OS Application Signing' "$WorkDir/$AppName/Info.plist" 2>&1> /dev/null
touch -r "$AppPath/$AppName/Info.plist" "$WorkDir/$AppName/Info.plist"
2.iTunesMetadata.plist 伪造iTunesMetadata.plist文件
plutil -xml "$WorkDir/iTunesMetadataSource.plist" 2>&1> /dev/nullecho -e "\t<key>appleId</key>" >> "$WorkDir/iTunesMetadata.plist" #伪造AppleID echo -e "\t<string>ChatMauve@apple.com</string>" >> "$WorkDir/iTunesMetadata.plist" echo -e "\t<key>purchaseDate</key>" >> "$WorkDir/iTunesMetadata.plist" #伪造购买时间 echo -e "\t<date>2010-08-08T08:08:08Z</date>" >> "$WorkDir/iTunesMetadata.plist"
伪造iTunesMetadata.plist文件的时间戳
touch -r "$AppPath/$AppName/Info.plist" "$WorkDir/iTunesMetadata.plist"
3.mach-O文件
Lamerpatcher方法中,靠替换mach-O文件中用于检测的特征字符串来绕过检测(题外话:设备是否越狱也可以通过检测文件系统的变化来判断,例如常见越狱文件,例如/Application/Cydia.app
/Library/MobileSubstrate/MobileSubstrate.dylibd)sed --in-place=.BCK \-e 's=/Cydia\.app=/Czdjb\.bpp=g' \-e 's=/private/var/lib/apt=/prjvbtf/vbr/ljb/bpt=g' \-e 's=/Applicat\d0\d0\d0ions/dele\d0\d0\d0teme\.txt=/Bppljcbt\d0\d0\d0jpns/dflf\d0\d0\d0tfmf\.txt=g' \-e 's=/Appl\d0\d0\d0ications/C\d0\d0ydi\d0a\.app=/Bppl\d0\d0\d0jcbtjpns/C\d0\d0zdj\d0b\.bpp=g' \-e 's=ations/Cy\d0\d0\d0/Applic\d0pp\d0\d0dia.a=btjpns/Cz\d0\d0\d0/Bppljc\d0pp\d0\d0djb.b=g' \-e 's=ate/va\d0\d0/priv\d0\d0\d0pt/\d0b/a\d0r/li=btf/vb\d0\d0/prjv\d0\d0\d0pt/\d0b/b\d0r/lj=g' \-e 's=pinchmedia\.com=pjnchmfdjb\.cpm=g' \-e 's=admob\.com=bdmpb\.cpm=g' \-e 's=doubleclick\.net=dpvblfcljck\.nft=g' \-e 's=googlesyndication\.com=gppglfszndjcbtjpn\.cpm=g' \-e 's=flurry\.com=flvrrz\.cpm=g' \-e 's=qwapi\.com=qwbpj\.cpm=g' \-e 's=mobclix\.com=mpbcljx\.cpm=g' \-e 's=http://ad\.=http://bd/=g' \-e 's=http://ads\.=http://bds/=g' \-e 's=http://ads2\.=http://bds2/=g' \-e 's=adwhirl\.com=bdwhjrl\.cpm=g' \-e 's=vdopia\.com=vdppjb\.cpm=g' \"$WorkDir/$AppName/$AppExecCur"# "/Applications/Icy\.app"# "/Applications/SBSettings\.app"# "/Library/MobileSubstrate"# "%si %sg %sn %se %sr %sI %sd %st %sy"# "Sig nerId%@%@ ent ity "# "Si gne rIde ntity"
伪造Mach-O文件时间戳
touch -r "$AppPath/$AppName/$AppExec" "$WorkDir/$AppName/$AppExec"
所以最可靠的方法是根据cryptid的值来确定,为0便是破解版。当检测出破解版本时注意,为了避免逆向去除检测函数,需要多处做检测。同时检测函数要做加密处理,例如函数名加密,并要在多处进行检测。
目前iOS平台游戏安全系列已完成3篇:
iOS平台游戏安全之IPA破解原理及防御(第三弹)相关推荐
- 【转】iOS平台游戏安全之IPA破解原理及防御
原文地址 -> http://danqingdani.blog.163.com/blog/static/186094195201292273453797/ 在博客上谈过了iOS游戏的内购安全,存 ...
- iOS游戏安全之IPA破解原理及防御
在博客上谈过了iOS游戏的内购安全,存档安全及内存安全.其实还有一个很泛滥但被视为鸡肋的问题,即iOS IPA破解问题,因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之 ...
- 【iOS应用安全】游戏安全之IPA破解原理及防御
iOS应用安全游戏应用有一个很泛滥但被视为鸡肋的问题,即iOS IPA破解问题.因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之后就会免费,所以对iOS应用安全IPA从只能在 ...
- iOS 游戏安全之 IAP 破解原理与防御
在博客上谈过了iOS游戏的内购安全,存档安全及内存安全.其实还有一个很泛滥但被视为鸡肋的问题,即iOS IPA破解问题,因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之后就会 ...
- 【IOS游戏开发】之IPA破解原理
IPHONE,ITOUCH和IPAD 需要安装苹果的IPA软件,我们向AppStore发布IPA软件的时候苹果会给我们的IPA软件添加签名认证 Appstore上的应用都采用了DRM(digitalr ...
- iOS平台游戏安全再议之存档修改与防御
一款游戏,如果免费功能做得足够吸引,那玩家下一步就会想要尝试收费部分.这时候,单纯玩家会走上正常付费路线,而较为吝啬的玩家则会尝试搜寻该款游戏的外挂,比如说xxx破解版,xxx完整版,xxx补丁,xx ...
- iOS平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御
http://danqingdani.blog.163.com/blog/static/186094195201298103346566/ 今年3月初写过一篇<iO平台游戏安全小议> ...
- iOS 平台上常见的安装包有三种,deb、ipa 和 pxl
前言: 目前 iOS 平台上常见的安装包有三种,deb.ipa 和 pxl. 其中 deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT 软件管理系 ...
- 【转】iOS平台安装包介绍
目前 iOS 平台上常见的安装包有三种:deb.ipa 和 pxl. deb格式 deb 是 Unix 系 统(其实主要是 Linux )下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写 ...
- iOS平台的应用程序调试与分析
本文阐述如何在iOS平台上对应用程序进行调试与分析,旨在指导新手分析iOS程序,高手请无视.内容包括软件硬件的准备.代码的解密.符号信息的获取.用gdb调试等,最后以京东LeBook为例子进行演示. ...
最新文章
- C++构造函数及析构函数的调用顺序
- golang中string长度
- java解析xml文件四种方式介绍、性能比较和基本使用方法
- datetimepicker不可以选择当天之前_专访吴京:网上《战狼3》的消息我都不知道,大家可以选择不信...
- 在MSP432 LaunchPad上运行MicroPython
- 基本SQL语句(一篇就够了)
- matlab插值计算
- Mysql 8.0.27 免安装配置教程(windows)
- html打开ppt自动播放,ppt文件怎么打开就可以全屏自动播放
- PS---星空名片制作教程
- 初识R语言介绍以及常见的问题
- 剑指Offer面试题22(Java版):栈的压入、弹出序列
- 如何监控电瓶车,根据交通规则推送给信息和罚单
- 夺冠之夜,荣耀的坚守和变通
- Unity 3D 海水的实现2 折射与反射 离屏相机的渲染
- 硕士生预答辩中存在的共性问题
- ACM进阶计划(来自于南阳理工学院)
- 如何识别图片上使用的字体名称
- 防伪防窜货系统是如何实现的
- 网络计算机抗震计算阻尼比,20170907学期建筑结构抗震课程机考答案
热门文章
- 系统分析与设计复习---项目管理概述
- Fabric 1.0 ubuntu1704安装过程
- 营销科学学会2021年年会揭晓玫琳凯博士论文奖得主
- 关于过去分词做形容词、any后接单复数、带疑问词的不定式作后置定语
- html图片自动适应屏幕代码,css让图片宽度自适应屏幕的例子
- 计算机主机异常经常蓝屏,电脑蓝屏怎么解决?电脑蓝屏几个常见的原因及解决办法...
- 185. 部门工资前三高的所有员工(重要)
- Python爬虫入门教程 89-100 定个小目标,先用Python爬个一亿B站用户
- 2018年Android面试题含答案--适合中高级(上)
- Android进程间通信系列-----------进程间的数据传递载体Parcel