禁止应用在模拟器上运行的方案及app安全问题

简介: 禁止应用在模拟器上运行的方案及app安全问题

大家都知道,应用安装到模拟器上,运行应用直接读取你的应用数据(如.archiver和.plist文件)。甚至能够通过修改模拟器的经纬度来达到模拟使用应用的人运行轨迹的效果,进而达到欺骗那些通过GPS计算距离的应用,来骗取钱财的效果。

当然用户也可以通过把app装到越狱手机上,通过第三方软件读取应用的数据,不过至少比直接把app装到模拟器上要方便的多吧,至少模拟经纬度不是那么连下里巴人都能做到的那么简单了吧,想欺骗苹果gps模块也很难。

对这种高级犯罪,要进行必要的防范,当然为了测试方便又不能禁止正常开发人员通过xcode 连接模拟进行调试。

解决的办法:

只要识别出应用在非调试状态下,在模拟器上运行的行为,直接在app生命周期的前期禁止它运行就可以。就是若发现输出设备不是xcode控制台,并且在模拟器上运行,那么直接让didFinishLaunchingWithOptions返回就可以了

当然开发人员的一般都是在debug模式下开发应用,realse模式下通常是发布版本的,外部人员是拿不到你debug版本安装包的,所以直接禁止非debug模式下应用在模拟器上运行也可以。xcode 12.1版本在使用支付宝SDK的组件项目采用realse模式下报模拟器错误,用debug模式可以,所以这样的工程只等用debug模式发布app。

代码如下:

(NSString *)getDeviceModel
{

struct utsname systemInfo;
uname(&systemInfo);

NSString *deviceKey = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
return deviceKey;

// NSDictionary *deviceNamesByCode = @{@“i386” 😡“Simulator”,
// @“x86_64” 😡“Simulator”,
// @“iPod1,1” 😡“iPod Touch”, // (Original)
// @“iPod2,1” 😡“iPod Touch”, // (Second Generation)
// @“iPod3,1” 😡“iPod Touch”, // (Third Generation)
// @“iPod4,1” 😡“iPod Touch”, // (Fourth Generation)
// @“iPhone1,1” 😡“iPhone”, // (Original)
// @“iPhone1,2” 😡“iPhone”, // (3G)
// @“iPhone2,1” 😡“iPhone”, // (3GS)
// @“iPad1,1” 😡“iPad”, // (Original)
// @“iPad2,1” 😡“iPad 2”, //
// @“iPad3,1” 😡“iPad”, // (3rd Generation)
// @“iPhone3,1” 😡“iPhone 4”, // (GSM)
// @“iPhone3,3” 😡“iPhone 4”, // (CDMA/Verizon/Sprint)
// @“iPhone4,1” 😡“iPhone 4S”, //
// @“iPhone5,1” 😡“iPhone 5”, // (model A1428, AT&T/Canada)
// @“iPhone5,2” 😡“iPhone 5”, // (model A1429, everything else)
// @“iPad3,4” 😡“iPad”, // (4th Generation)
// @“iPad2,5” 😡“iPad Mini”, // (Original)
// @“iPhone5,3” 😡“iPhone 5c”, // (model A1456, A1532 | GSM)
// @“iPhone5,4” 😡“iPhone 5c”, // (model A1507, A1516, A1526 (China), A1529 | Global)
// @“iPhone6,1” 😡“iPhone 5s”, // (model A1433, A1533 | GSM)
// @“iPhone6,2” 😡“iPhone 5s”, // (model A1457, A1518, A1528 (China), A1530 | Global)
// @“iPhone7,1” 😡“iPhone 6 Plus”, //
// @“iPhone7,2” 😡“iPhone 6”, //
// @“iPad4,1” 😡“iPad Air”, // 5th Generation iPad (iPad Air) - Wifi
// @“iPad4,2” 😡“iPad Air”, // 5th Generation iPad (iPad Air) - Cellular
// @“iPad4,4” 😡“iPad Mini”, // (2nd Generation iPad Mini - Wifi)
// @“iPad4,5” 😡“iPad Mini” // (2nd Generation iPad Mini - Cellular)
// };
//
//
// return [deviceNamesByCode objectForKey:deviceKey];

}

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *phoneType = [self getDeviceModel];
//禁止本软件的输出设备为xcode控制台,也就是禁止在连接xcode通过代码直接在模拟器上调试运行
if(!isatty(STDOUT_FILENO) && (phoneType.length != 0) && ([@“i386” isEqualToString:phoneType] || [@“x86_64” isEqualToString:phoneType]))
{
//禁止用模拟器刷单
return NO;
}
//第二种禁止模拟器运行的方法是,TARGET_OS_SIMULATOR是苹果系统自己宏
#if TARGET_OS_SIMULATOR
//假如没有定义取消连接XCode时的特别限制
if(!isatty(STDOUT_FILENO))
{
//禁止用模拟器刷单
return NO;
}
#endif
禁止非调试模式下在模拟器上运行
//#ifndef DEBUG
// if((phoneType.length != 0) && ([@“i386” isEqualToString:phoneType] || [@“x86_64” isEqualToString:phoneType]))
// {
// //禁止用模拟器刷单
// return NO;
// }
//#endif
}

当然这个禁止模拟器运行的方法也有漏洞,当用户启动xcode,在模拟器上就可以运行这个应用。若想想彻底禁止在模拟器里运行需要设置一个宏,当发布时,设置这个宏生效,当发现TARGET_OS_SIMULATOR时直接返回NO就可以了,不过这样做麻烦些(自己发布前测试需要模拟器,正式发布时还需要修改对应编译宏),用上面的方法就可以了,没有必要把所有情况都防止。防外行,不放内行。当然你的应用可能有机密信息需要彻底堵住模拟器运行的情况,可以用后者。

信息安全等级保护是对信息和信息载体按照重要性等级分级别进行保护的一种工作,在中国、美国等很多国家都存在的一种信息安全领域的工作。在中国,信息安全等级保护广义上为涉及到该工作的标准、产品、系统、信息等均依据等级保护思想的安全工作;狭义上一般指信息系统安全等级保护。

信息系统的安全保护等级分为以下五级:

第一级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益造成损害,但不损害国家安全、社会秩序和公共利益。

第二级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益产生严重损害,或者对社会秩序和公共利益造成损害,但不损害国家安全。

第三级,信息系统受到破坏后,会对社会秩序和公共利益造成严重损害,或者对国家安全造成损害。

第四级,信息系统受到破坏后,会对社会秩序和公共利益造成特别严重损害,或者对国家安全造成严重损害。

第五级,信息系统受到破坏后,会对国家安全造成特别严重损害。

信息泄密有两种途径,一是直接人为,二是间接软件。 要知道,任何防护措施都不是没有漏洞的,就好象锁头防君子不防小人一个道理。软件安全就是为了做到防止外行轻易窃取软件需要保密的数据,尽量防止内行的恶意破坏,窃取,骗取数据和钱财。再好的软件也做不到绝对的安全,但能挡住99%就很不错。简言之也就是提高软件被部分破解的门槛。

对于人为信息泄密,一般通过保密协议和法制办法保证。一般IT人员还是有这方面的职业道德的。

对于小型软件通常通过,公有密钥,md编码,混淆,ssl加密,socket连接通信,自定义加密算法(如:app的安全性设计策略 http://blog.csdn.net/jia12216/article/details/46521297 ),验证码登录机制,验证码3分钟超时限制(防止字典式攻击),等来达到加密和防范的效果。

请求用非加密的http请求发送请求和返回数据,那和光天下的裸奔没有任何区别,很容易被抓包工具,甚至是浏览器直接截获,并且修改后把伪造数据发送给服务器,所以软件的加密传输是必然的。


非法人员破解软件的目的一般有这几个方面:

  1. 通过截获和篡改消息来达到直接骗取钱财(一般是现在流行的网络虚拟货币)。
  2. 为了证明我很牛叉的黑客心理。
  3. 截获信息出卖信息。如截获客户信息,出卖给竞争对手。
  4. 恶意捣乱,非法竞争,恶意报复。
    让付费软件变成不付费软件(俗称的破解软件,绿色软件)。
目录
相关文章
|
1月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
174 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
1月前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
1542 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
1月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
176 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
1月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
54 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
1月前
|
供应链 数据挖掘 API
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
112 8
|
2月前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
221 12
|
3月前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
286 6
|
4月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
5月前
|
前端开发 API Android开发
10 大 APP 开发方案比较
本文首发于微信公众号“前端徐徐”,深入剖析了当前最受欢迎的十种APP开发方案,包括传统的iOS和Android开发、跨平台的React Native和Flutter、现代化的CapacitorJS和PWA等,旨在帮助开发者在众多选择中找到最适合的开发路径。通过详细分析每种方案的优缺点及适用场景,文章提供了详尽的比较和实用建议,助力高效、优质的APP开发。
797 0
10 大 APP 开发方案比较
|
Android开发
Android 点击通知栏消息打开activity,并判断app是否运行
Android 点击通知栏消息打开activity,并判断app是否运行
1903 0

热门文章

最新文章

  • 1
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 2
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
  • 3
    PiliPala:开源项目真香,B站用户狂喜!这个开源APP竟能自定义主题+去广告?PiliPala隐藏功能大揭秘
  • 4
    Axure原型模板与元件库APP交互设计素材(附资料)
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 8
    小游戏源码开发之可跨app软件对接是如何设计和开发的
  • 9
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 10
    【Azure Function】Function App门户上的Test/Run返回错误:Failed to fetch