禁止应用在模拟器上运行的方案及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. 恶意捣乱,非法竞争,恶意报复。
    让付费软件变成不付费软件(俗称的破解软件,绿色软件)。
目录
相关文章
|
3月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
173 0
|
3月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
223 5
|
4月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
5月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
210 1
|
5月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
561 4
|
6月前
|
安全 测试技术 开发者
银行转账模拟器手机版app, 银行转账凭证生成器app,用autojs实现效果【逼真效果】
本内容展示了一套基于Auto.js的银行APP自动化测试脚本和框架,用于学习和研究移动应用测试技术。脚本涵盖登录、转账等功能测试
|
5月前
|
存储 移动开发 监控
App Trace功能实战:一键拉起、快速安装与免提写邀请码的应用实践
App Trace系统通过一键拉起、快速安装和免提写邀请码三大功能,显著提升用户转化率、安装成功率和邀请注册率。结合深度技术实现与优化,助力公司用户增长,成为移动端核心基础设施。
|
8月前
|
数据采集 JSON 网络安全
移动端数据抓取:Android App的TLS流量解密方案
本文介绍了一种通过TLS流量解密技术抓取知乎App热榜数据的方法。利用Charles Proxy解密HTTPS流量,分析App与服务器通信内容;结合Python Requests库模拟请求,配置特定请求头以绕过反爬机制。同时使用代理IP隐藏真实IP地址,确保抓取稳定。最终成功提取热榜标题、内容简介、链接等信息,为分析热点话题和用户趋势提供数据支持。此方法也可应用于其他Android App的数据采集,但需注意选择可靠的代理服务。
366 11
移动端数据抓取:Android App的TLS流量解密方案
|
7月前
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
6月前
|
BI 开发工具 开发者
App全渠道统计方案:如何用一个工具整合所有获客渠道数据?
还在为地推、社群、广告等不同获客渠道的数据分散而烦恼吗?本文将教您如何用一个工具整合所有渠道数据,实现精准的渠道归因与效果分析。
228 0