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

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

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

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

weixin_39904612的博客 1万+

手把手教你用若依WMS搭建企业级仓库管理系统(Vue+Spring Boot实战)

本文提供了一份基于若依框架(RuoYi)快速搭建企业级仓库管理系统(WMS)的实战指南。详细介绍了从环境准备、项目初始化到核心功能模块(如入库流程、库存管理看板)深度定制的全过程,并涵盖Lodop打印集成、移动端PWA适配及生产环境Docker部署等高级主题,帮助开发者高效构建稳定可用的WMS系统。

weixin_29015899的博客 563

康耐视CogPMAlignTool模板匹配详解

康耐视CogPMAlignTool是一款基于边缘特征的模板匹配工具,适用于工业视觉检测。该工具提供PatMax、PatQuick、PatFlex等不同算法,分别对应高精度、快速匹配和柔性表面等应用场景。关键参数包括特征粒度(粗糙/精细)、边缘阈值、弹性范围等,支持旋转缩放匹配和极性忽略功能。工具操作流程包括图像采集、参数设置、模板训练和运行检测,通过调整查找概数、接收阈值等参数可优化识别效果。配套的卡尺工具(CogCaliperTool)通过一维投影和边缘筛选实现精准定位,适用于高精度尺寸测量场景。

2502_92473474的博客 1318

[iOS]判断设备是否越狱

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

Gamin 3347

第四章 汇川技术InoProShop入门之串口自由协议解读

摘要: 串口自由协议是工业自动化中针对特定需求设计的自定义通信协议,具有高度灵活性和针对性,适用于小型设备、实时控制等场景。其核心包括自定义帧结构(起始符、地址码、数据区、校验位等)和通信规则(波特率、交互机制)。相比标准协议,自由协议效率更高但兼容性弱,设计时需注重可靠性、效率和可扩展性,适用于定制化或高实时性需求,如传感器数据采集或老旧设备改造。典型应用需平衡精简帧结构与抗干扰能力,同时预留扩展空间。

zyfucking2010的博客 2214

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

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

Keith003的博客 4656

【PyTorch项目实战】之ResNet系列:resnet18、resnet34、resnet50、resnet101、resnet152

ResNet (Residual Network) :是一种深度卷积神经网络(CNN)架构,其核心思想是引入残差学习(Residual Learning)机制,通过跳跃连接(skip connections)来解决深层网络训练中的退化问题。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 6374

一文搞懂多速率信号处理中信号插值的本质:从插 0、插原值到线性插值!

信号插值在数字信号处理中经常被使用,但“插值”背后究竟发生了什么,却常被忽略。插0、插原值、线性插值看似只是不同的实现方式,实则对应着完全不同的频域效应与滤波特性。本文将结合公式与MATLAB仿真,深入剖析插0、插原值与线性插值三种典型策略的本质区别。

m0_66360845的博客 918

swift判断手机是否越狱

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

NoPolun_iOS的博客 1675

淘系商品的成长密码:历史与趋势透视

本文分析了淘系商品的发展历程,从早期的市场探索到如今的行业领先地位,深入探讨了技术创新、供应链优化、用户需求洞察等关键因素在淘系商品成功中的作用。通过对平台不断完善商品生态、提升购物体验和服务的过程分析,文章总结了淘系商品在竞争激烈的市场中如何通过创新应对挑战并推动电商行业的进步。未来,随着消费趋势变化和新兴模式的兴起,淘系商品将在更大范围内发挥其市场影响力。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

【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万+

Qt版Dalsa线扫相机的采集Demo

Qt Dalsa

追赶时代的博客 604

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

qq_44846654的博客 2805

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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、付费专栏及课程。

余额充值