博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防止你的iPhone程序遭盗版(入门篇)
阅读量:5063 次
发布时间:2019-06-12

本文共 1997 字,大约阅读时间需要 6 分钟。

转载自:

老大让研究app遭盗版了怎么判断,找到一片文章,没测试过,不知道咋测试!先收藏下!

首先简单介绍一下原理:

现在大多数的苹果验证安装app的办法都会动一个文件, 就是在.app文件夹下的”Info.plist”, 也就是那个程序信息文件.

代码很简单, 不再详细解释什么意思了

1. 检查Info.plist 是否存在 SignerIdentity这个键名(Key).

未的程序是不会有这个键名的, 苹果没给你加, 你自己没有加, 如果有, 那是哪儿来的呢?? 嘻嘻….

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @”SignerIdentity”] != nil) {

  // 这就是被过的app

}

2. 检查3个文件是否存在

NSString* bundlePath = [[NSBundle mainBundle] bundlePath];

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:(@”%@/_CodeSignature”, bundlePath)];

if (!fileExists) {

// 这就是被破解过的app

}

BOOL fileExists2 = [[NSFileManager defaultManager] fileExistsAtPath:(@”%@/CodeResources”, bundlePath)];

if (!fileExists2) {

/// 这就是被破解过的app

}

BOOL fileExists3 = [[NSFileManager defaultManager] fileExistsAtPath:(@”%@/ResourceRules.plist”, bundlePath)];

if (!fileExists3) {

// 这就是被破解过的app

}

 

3. 对比文件修改时间是否一致, 看看你的程序是不是被二进制编辑器修改过了

NSString* bundlePath = [[NSBundle mainBundle] bundlePath];

NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath];

NSString* path2 = [NSString stringWithFormat:@"%@/程序名字", bundlePath];

NSDate* infoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:path traverseLink:YES] fileModificationDate];

NSDate* infoModifiedDate2 = [[[NSFileManager defaultManager] fileAttributesAtPath:path2 traverseLink:YES] fileModificationDate];

NSDate* pkgInfoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@”PkgInfo”] traverseLink:YES] fileModificationDate];

if([infoModifiedDate timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) {

//Pirated

}

if([infoModifiedDate2 timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) {

//Pirated

}

如果以上3条都没挡住丫挺的步伐, 请等我出高级篇吧 :) 恭喜发财!

PS:

本人用的就是越狱过后的机器,

用 phoneView 打开看了一下,上述的检测方法好像有点儿过时了~

不过获取设备中 userDefaults 物理文件的修改时间还是具有一些参考价值的。

转载于:https://www.cnblogs.com/yang3wei/archive/2012/10/04/2739345.html

你可能感兴趣的文章
王者荣耀交流协会第二次Scrum立会
查看>>
设计模式-装饰者模式
查看>>
windows 下命令行关闭进程。
查看>>
fileSave,fileOpen,fileSaveAs
查看>>
VMware虚拟机安装Centos预安装环境图文教程1
查看>>
时钟Demo
查看>>
leetcode 区间合并
查看>>
Java中的控制语句
查看>>
通过正则表达式来判断字符串是否为数字组成的
查看>>
vue中引入jQuery
查看>>
过滤器
查看>>
HDU5692(线段树+dfs序)
查看>>
MVC引用asp.net报表(测试小例子)
查看>>
写出float x 与“零值”比较的if语句
查看>>
我是MVC菜鸟---MVC的优劣对比
查看>>
iOS性能优化/内存优化常用方法
查看>>
51Nod 1421
查看>>
51Nod 1289 大鱼吃小鱼
查看>>
linux ps查进程 kill关闭进程
查看>>
人月神话读后感2
查看>>