iOS --判断设备是否为越狱设备,防止越狱设备进行iap内购

IOS iap处理逻辑流程图再次梳理 序言: 本文补全一下iOS iap处理逻辑。 iap处理逻辑 苹果退单wiki:https://developer.apple.com/documentation/storekit/in-app_purchase/handling_refund_notifications 一、上图主要处理了以下业务: ·普通购买 ·自动续订订阅 ·补单处理 预防黑产 退单处理 二、除了上述业务逻辑,需要实现: 业务自身的订单逻辑 log 预防黑产规则库 1.业务自身的订单逻辑 即业务自身的订 阅读详情

最近,游戏SDK要集成iap苹果内购,但是很担心越狱机安装一些iap free之类的工具来刷单,干脆就限制越狱设备进行iap支付好了。那如何检测设备是否为越狱设备呢?代码如下:

- (BOOL)myIap_isJailbroken
{
    //以下检测的过程是越往下,越狱越高级
    
    //    /Applications/Cydia.app, /privte/var/stash
    BOOL jailbroken = NO;
    NSString *cydiaPath = @"/Applications/Cydia.app";
    NSString *aptPath = @"/private/var/lib/apt/";
    if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) {
        jailbroken = YES;
    }
    if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) {
        jailbroken = YES;
    }
    
    //可能存在hook了NSFileManager方法,此处用底层C stat去检测
    struct stat stat_info;
    if (0 == stat("/Library/MobileSubstrate/MobileSubstrate.dylib", &stat_info)) {
        jailbroken = YES;
    }
    if (0 == stat("/Applications/Cydia.app", &stat_info)) {
        jailbroken = YES;
    }
    if (0 == stat("/var/lib/cydia/", &stat_info)) {
        jailbroken = YES;
    }
    if (0 == stat("/var/cache/apt", &stat_info)) {
        jailbroken = YES;
    }
    //    /Library/MobileSubstrate/MobileSubstrate.dylib 最重要的越狱文件,几乎所有的越狱机都会安装MobileSubstrate
    //    /Applications/Cydia.app/ /var/lib/cydia/绝大多数越狱机都会安装
    //    /var/cache/apt /var/lib/apt /etc/apt
    //    /bin/bash /bin/sh
    //    /usr/sbin/sshd /usr/libexec/ssh-keysign /etc/ssh/sshd_config
    
    //可能存在stat也被hook了,可以看stat是不是出自系统库,有没有被攻击者换掉
    //这种情况出现的可能性很小
    int ret;
    Dl_info dylib_info;
    int (*func_stat)(const char *,struct stat *) = stat;
    if ((ret = dladdr(func_stat, &dylib_info))) {
        NSLog(@"lib:%s",dylib_info.dli_fname);      //如果不是系统库,肯定被攻击了
        if (strcmp(dylib_info.dli_fname, "/usr/lib/system/libsystem_kernel.dylib")) {   //不相等,肯定被攻击了,相等为0
            jailbroken = YES;
        }
    }
    
    //还可以检测链接动态库,看下是否被链接了异常动态库,但是此方法存在appStore审核不通过的情况,这里不作罗列
    //通常,越狱机的输出结果会包含字符串: Library/MobileSubstrate/MobileSubstrate.dylib——之所以用检测链接动态库的方法,是可能存在前面的方法被hook的情况。这个字符串,前面的stat已经做了
    
    //如果攻击者给MobileSubstrate改名,但是原理都是通过DYLD_INSERT_LIBRARIES注入动态库
    //那么可以,检测当前程序运行的环境变量
    char *env = getenv("DYLD_INSERT_LIBRARIES");
    if (env != NULL) {
        jailbroken = YES;
    }
    return jailbroken;
}
在iap支付调起时,先检测一下是否为越狱机,是的话直接return掉,不是再执行支付的代码。暂时还没在越狱机上测试过(没办法,公司太抠,不给机器),还有就是在模拟器上会检测为越狱设备(|||==),反正模拟器也不能iap充值嘛!先不管它。有设备的同仁,测试下是否可行,给我留言哦!亲。(不做伸手党)

iOS内购系统实现:App Store收据接收与验证完整代码实战 消耗型产品(Consumable)是指可以多次购买并使用的虚拟商品,例如游戏中的金币、体力值或一次性道具。这类商品的特点是:一旦使用即消失,用户可再次购买。其技术实现要求每次购买都必须经过完整的交易流程,并且不能恢复——即使更换设备,已使用的消耗品也不会自动返还。// 示例:请求一个消耗型商品进行购买代码逻辑逐行解读:- 第1行:初始化一个支付对象,传入从获取的SKProduct对象。- 第2行:调用将支付请求加入队列,触发系统弹窗让用户确认付款。 阅读详情

相关推荐

iOS判断是否越狱设备方法示例

前言 苹果是非常看重产品的安全性的,所以给用户设计了一套复杂的安全机制。这让喜爱自由,崇尚一切开放的程序员们极度不爽,于是越狱就成了苹果和黑客们反复斗法的场所。总体来说,越狱可以让我们随意安装、共享应用,但确实也降低了设备的安全性,会给一些恶意应用提供方便之门。 有时我们的应用希望知道安装的设备是否已经越狱了,显然,苹果官方不会给出解决方案来的,那么我们怎么办呢?下面来一起看看详细的介绍吧 越狱设备打印   (lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@”/Applications/Cydia.app”] YES  

PHP苹果内购验证步骤

/** * 验证返回的状态码 * 0 验证成功 * 21000 App Store不能读取你提供的JSON对象 * 21002 receipt-data域的数据有问题 * 21003 receipt无法通过验证 * 21004 提供的shared secret不匹配你账号中的shared secret * 21005 receipt服务器当前不可用 * 21006 receipt合法,但是订阅已过期。服务器接收到这...

xxs18326183038的博客 1684

开坑!双向逆变电源实操系列--第一节PFC

文章摘要 本文介绍了PFC(功率因数校正)的基本概念及其重要性。PFC电路通过储能和功率因数校正两大功能,解决交流电小电压大电流的问题,并减少无功电流损耗。文章对比分析了无源PFC(电感串联式、填谷式、LC谐振式)和有源PFC(升压型、交错并联、图腾柱式)的拓扑结构及适用场景。针对2400W双相逆变电源设计,作者选择图腾柱PFC拓扑,详细阐述了设计思路,包括电气参数计算、性能指标设定、技术重点及风险预判。文章还提供了主电路参数定制计算方法,如BOOST电感值的推导过程,为电源工程师提供实用参考。

lyzh971103的博客 2545

ios最新防越狱检测插件_-一份从零开始的iOS插件分享-

最近我分享了很多关于越狱的插件,在这个文里我会一步一步告诉大家我是如何实现的。在前面各位需要了解的是,这一切都建立在越狱之上,得益于P大以及众多大佬的努力,目前所有的iOS设备都可以越狱,并且使用极其方便,由于是分区越狱,使得小白哪怕捣鼓坏了,也能通过重启解决。【A12/A13处理器机型系统版本高于13.3.1无法越狱】首先我们需要给你的机器开启越狱。1.你需要复制以下网址到Safari浏览器打开...

weixin_39904612的博客 1万+

matlab/simulink saw谐振器仿真,基于Matlab的SAW模态耦合模型的仿真研究

第32卷 第 4 期Vol. 32 No. 4重 庆 理 工 大 学 学 报 (自然科学)Journal of Chongqing University of Technology( Natural Science)2 0 1 8年 4 月Apr. 2018doi : 10.3969/j . issn. 1674-8425(z). 2018.04.002本文引用格式 :李志鹏,马龙祥,孟旭,等•基...

weixin_36192634的博客 1385

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

[iOS]判断设备是否越狱

若越狱设备没使用Cydia商店,这种判断检测不准。若设备是不完美越狱,已经回退为未越狱状态,这种判断也不准。可以收集常见的越狱文件,定个标准判断手机中存在一个或多个,表示手机已经越狱。利用非越狱手机没权限查看Applications来判断。

Gamin 3347

“Agent Harness”和“Harness Engineering”

摘要:2026年AI工程化领域,"Agent Harness"(AI代理运行控制系统)与"Harness Engineering"(马具工程方法论)常被混淆。前者是管理AI代理非推理事务的技术实体(工具调用、记忆管理、安全约束等7层架构),后者是设计优化该系统的工程学科。研究表明,优化的Harness设计可使同一模型性能提升10倍。两者关系如同"马具"与"制具工艺":Harness Engineering指导Agent Harn

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 837

IOS内购经常遇到的一些问题,和一些容易混淆的点。

Q1:内购和Apple Pay的区别? A1:内购是内购,Apple Pay是Apple Pay。我不知道有多少人第一次接触时,会把这俩概念混淆掉,这里你可以简单这么理解,虚拟的物品就是用内购,实际的物品就是用Apple Pay。Apple Pay是一种支付方式,你可以类比为支付宝,微信那种。但人家只支持实际物品,如果你东西是虚拟的话,你却集成Apple Pay上架是要被拒绝的哦~当然反过来,实...

Keith003的博客 4656

Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动

在上一篇中,我们编译了kernel,并在qemu上进行了运行,但到最后,在挂载根文件系统时候,挂载失败,这是因为我们还没有根文件系统,在本章中,我们将制作根文件系统。rootfs制作方式有很多方式,如busyBoxbuildrootYocto等,在该篇章中,我们使用buildroot来制作根文件系统,主要考虑到busyBox制作完还需要手动首改一些启动配置比较繁琐,而Yocto如果电脑配置不是很好,编译时间过长,比较麻烦。

sinat_33909696的博客 2465

SQL进阶技巧:数据预处理如何对数据进行分桶【分箱】?

本文详细介绍了数据分析中常见的几种分桶方式:基于业务规则的分桶、等距分桶及等频分桶等,针对每种分桶方式给出了SQL实现

石榴姐yyds 4018

swift判断手机是否越狱

在代码中设置如下方法  func isJailBroken() -> Bool {         //判断设备上是否安装了这些程序        let apps = ["/APPlications/Cydia.app","/APPlications/limera1n.app","/APPlications/greenpois0n.app","/APPlications/blackra1...

NoPolun_iOS的博客 1675

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!拒绝iap Free!让iphone越狱用户无从下手!【2012年5月2日更新防护iap Free的方法】

本站文章均为 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/673.html          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!对于iOS的应用安全这块主要有两块是我们开发者可以避免的,一个是存储数据加密,这个在上一篇文章Himi介绍了base64加密算

李华明Himi 2万+

PCL 基于法向距离的对应点获取

提出了一种基于法向量欧氏距离的点云配准方法。详细推导了法向量距离计算公式,并给出具体计算流程。在代码实现部分,采用PCL库完成了点云法向量计算和对应关系估计,通过可视化验证了算法有效性。实验结果表明,该方法能够准确获取点云间的对应关系,为后续点云配准奠定了基础。

点云侠的博客 226

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IOS开发之苹果内购(IAP)基本流程

iOS内购(IAP)集成流程主要包括五个环节:1)在开发者平台配置商品信息;2)客户端查询商品;3)发起购买请求;4)服务器验证收据;5)交付商品。实现时需注意:商品类型一旦创建不可更改;必须设置支付队列监听器;交易完成后需调用finishTransaction();为安全考虑,收据验证应在服务器端完成。整个流程涉及客户端与服务器的协同,确保正确处理购买状态变更和商品交付。

qq_44846654的博客 2805

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

iOS应用内支付(IAP)的那些坑

我们在今年春节后上线了新的在线智能题库:猿题库。猿题库现在推出了公务员考试行测和申论2个产品,均包括web, iOS和Android三个平台。这次我们尝试做一个收费的产品,所以在iOS端集成了应用内支付(IAP)功能。在开发过程中和上线后,我们遇到了IAP中的一些坑,在此分享给各位。   IAP 审核相关的坑 IAP开发的详细步骤我写在另一篇博客中了。在此主要介绍审核时遇到的问题。

中国iOS开发者协会官方博客 1379

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

iOS内购实现完整教程:IAP集成与测试最佳实践

iOS应用内购买(IAP)是移动应用变现的重要方式,但实现起来却充满挑战。本文基于iOS最佳实践指南,为您提供完整的IAP集成与测试解决方案。无论您是iOS开发新手还是经验丰富的开发者,都能从中获得实用的内购实现技巧和最佳实践方法。 ## 为什么要重视IAP实现质量? 💡 应用内购买是iOS生态系统中的重要组成部分,但很多开发者在实现过程中忽视了安全性验证。不正确的IAP实现可能导致收入损失

gitblog_00991的博客 535

工具类 App 对接 iOS 内购(IAP)Swift完整教程

工具类 App 接入 iOS 内购,核心是做好三件事:在 App Store Connect 正确配置商品、在客户端用 StoreKit 2 实现购买与恢复、在服务端完成凭证校验。按本文流程逐步落地,再配合充分的沙盒测试,就能稳定、合规地完成内购功能上线。

huazaihahha的博客 347

【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!!让iphone越狱用户无从下手!!!

转载自:http://blog.youkuaiyun.com/xiaominghimi/article/details/7439720      对于iOS的应用安全这块主要有两块是我们开发者可以避免的,一个是存储数据加密,这个在上一篇文章Himi介绍了base64加密算法;另外一个就是付费产品防护!那么本篇Himi来分享如何防护越狱用户的iap Cracker! 对于iap Crack

tangaowen的专栏 1756

IAP Receipt Validation on iOS 学习总结

之前看 http://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html   进行的归纳总结,还不是很透彻,需要再次深入学习。 一、IAP特点 1.IAP使得用户无需离开软件,便可无缝升级软件功能或扩充内容。  2. IAP支持付费后下载,所以可以有效

wwmusic的专栏 2789

iOS内购二:购买和恢复

iOS内购二:购买和恢复 购买 构建一个SKPayment对象,传递SKProduct。SKPayment被创建后,就会将其加入到SKPaymentQueue队列中 然后用户会授权,payment是异步,所以需要一个observer,apple建议observer添加都的AppDelegate中 支付之后,app store会返回一个transaction,transaction包含receipt(被加密签名,可以获取购买的信息)和 state 最后,还需要让apple知道你已经完成处理这个transac

了凡 7003

唐巧:iOS应用内支付(IAP)的那些坑

来源:唐巧的博客(@唐巧_boy) 前言 我们在今年春节后上线了新的在线智能题库:猿题库。猿题库现在推出了公务员考试行测和申论2个产品,均包括web, iOS和Android三个平台。这次我们尝试做一个收费的产品,所以在iOS端集成了应用内支付(IAP)功能。在开发过程中和上线后,我们遇到了IAP中的一些坑,在此分享给各位。 IAP 审核相关的坑 IAP开发的详细步骤我写在另一篇博客中

Thinking in Haxe - Rocks Wang的专栏 2393
上一篇: swift学习日志—— if let 与 guard 语法糖
下一篇: iOS --iap内购的那些小事
Micheal_Xiao
博客等级 码龄16年 9粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值