初级数据持有化-沙盒

//获取沙盒主路径

    /*NSString *homePath=NSHomeDirectory();

    NSLog(@"%@",homePath);

    

    

    //获取document:通常用来存放应用程序需要持久化使用的关键数据,比如本地数据库等  iTunes 在备份的时候会自动备份此文件夹

    NSString *documentPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSLog(@"%@",documentPath);

    

    

    //library:通常存储用来应用程序运行期间生成的持久化数据,比如用户账户等。应用程序退出后不会被删除, 但是 iTunes 备份时不会备份此文件夹.

    NSString *library=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)firstObject];

    NSLog(@"%@",library);

    

    //cache:运行期间的缓存文件:历史记录等

    NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];

    NSLog(@"%@",cachePath);

    

    //preferences :应用程序的设置:夜间模式等

    

    

    

    //tmp:存放临时文件,应用程序结束后清除

    NSString *tmp=NSTemporaryDirectory();

    NSLog(@"%@",tmp);

    

    

    //Bundle

    //获取当前的应用程序包

    NSBundle *bundle=[NSBundle mainBundle];

    //获取当前包的路径

//    NSString *bundlePath=[bundle resourcePath];

    //或者

    NSString *bundlePath=[bundle bundlePath];

    NSLog(@"%@",bundlePath);

    

    //获取包内的文件内容

    NSString *imgPath=[bundle pathForResource:@"dog" ofType:@"png"];

    NSLog(@"%@",imgPath);

    

    NSString *interfacePath=[bundle pathForResource:@"蓝鸥接口文档" ofType:@"txt"];

    NSLog(@"%@",interfacePath);*/

    

    

    //写入文件

    

    //简单对象的写入文件  :数组,字典,字符串,NSData

    

    //字符串写入文件

    /* NSString  *incantation=@"I love you very much.Do you love me?";

    

    NSString *path=NSHomeDirectory();

    path=[path stringByAppendingString:@"/zgc.txt"];

    

    //写入文件的方法

    [incantation writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

    

    

    //从文件获取文件

    NSString *resultString=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@",resultString);*/

    

    //数组写入文件

    /*NSArray *array=@[@"项链想念被相亲",@"一生一世一双人"];

    

    NSString *path=NSHomeDirectory();

    path =[path stringByAppendingString:@"/王安石.txt"];

    //写入文件

    [array writeToFile:path atomically:YES];

    

    //读取文件

    NSArray *result=[NSArray arrayWithContentsOfFile:path];

    NSLog(@"%@",result[0]);*/

    

    //字典写入文件

    /*NSDictionary *dict=@{@"周哥问:":@"我漂亮吗?",

                         @"我答:":@"NO"};

    

    NSString *path=NSHomeDirectory();

    path =[path stringByAppendingString:@"/周哥.txt"];

    //写入文件

    [dict writeToFile:path atomically:YES];

    

    NSDictionary *dic=[NSDictionary dictionaryWithContentsOfFile:path];

    NSLog(@"%@",dic);*/

    

    //图片写入文件


    /*UIImage *image=[UIImage imageNamed:@"dog.png"];

    

    NSData *data=UIImageJPEGRepresentation(image, 1);

    

    NSString *path=NSHomeDirectory();

    path=[path stringByAppendingString:@"/图片.png"];

    //写入文件

    [data writeToFile:path atomically:YES];

    

    //取出图片

    NSData *result=[NSData dataWithContentsOfFile:path];

    UIImage *resultImage=[UIImage imageWithData:data];*/

    

    

    

#pragma mark  --复杂对象写入文件-----

    

    /*Person *person=[Person new];

    person.name=@"MisserSar";

    person.gender=@"man";

    

    

    NSString *path=NSHomeDirectory();

    path=[path stringByAppendingString:@"/person.txt"];

    

    

    //创建可变data,用来存放归档数据

    NSMutableData *mutData=[[NSMutableData alloc]initWithCapacity:10];

    

    //创建归档对象

    NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:mutData];

    

    //归档

    [archiver encodeObject:person forKey:@"person"];

    //完成归档

    [archiver finishEncoding];

    //写入文件

    [mutData writeToFile:path atomically:YES];

    

    

    

    //使用data对象获取数据

    NSData *data=[NSData dataWithContentsOfFile:path];

    

    //创建反归档对象

    NSKeyedUnarchiver *unchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:data];

    

    //反归档

    Person *person1= [unchiver decodeObjectForKey:@"person"];

    //完成反归档

    [unchiver finishDecoding];

    

    NSLog(@"%@,%@",person.name,person1.name);*/

    

    

    

    

    //数据持久化的方式

    

    //1. 属性列表

    //2. NSUserDefaults

    //3. write to file

    //4. sqlite

    //5. Core data


在Android逆向工程中,技术是一种用于隔离和分析可疑应用的安全机制。通过模拟一个受控的运行环境,可以防止恶意代码对真实系统造成危害,并帮助安全研究人员分析应用的行为[^1]。 ### Android逆向环境中使用的检测技术 #### 1. 的基本原理 的核心思想是为应用程序提供一个隔离的执行环境,通常通过虚拟或容器技术实现。常见的包括: - **基于虚拟机(VM)的**:如 QEMU、VirtualBox 等。 - **基于容器的**:如 Docker 容器。 - **操作系统级**:如 SELinux、AppArmor 等。 这些技术通过限制资源访问、监控系统调用等方式来控制应用行为,从而检测潜在的恶意活动[^2]。 #### 2. 检测技术 为了识别是否处于环境中,攻击者可能会使用以下方法进行检测: ##### a. 检测硬件特征 - **CPU信息检测**:检查 CPU ID、处理器型号等,中的 CPU 通常与物理设备不同。 - **内存大小检测**:环境通常具有有限的内存资源,攻击者可以通过检测内存容量来判断是否处于中。 ##### b. 检测系统文件和注册表 - **关键文件路径检测**:可能缺少某些系统文件或目录结构。 - **注册表项检测**:例如检测 `HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System` 中的硬件标识。 ##### c. 检测调试器和虚拟特征 - **调试器检测**:通过检查调试寄存器(DR0-DR7)、异常处理链等方式判断是否存在调试器。 - **虚拟特征检测**:如检测 Hypervisor 标志位(CPUID 指令返回的 Hypervisor 标志)。 ```java // Java示例:检测设备是否 rooted 或处于调试模式 public boolean isDebuggable() { return (context.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; } public boolean isRooted() { String buildTags = android.os.Build.TAGS; return buildTags != null && buildTags.contains("test-keys"); } ``` ##### d. 行为分析检测 - **执行延迟**:环境中的执行速度通常比真实设备慢。 - **用户交互缺失**:可能缺乏真实的用户输入行为,如触摸事件、传感器数据等。 #### 3. 常见工具与框架 - **Androguard**:可用于静态分析 APK 文件,识别潜在的反检测逻辑[^1]。 - **ExploitMeter**:结合模糊测试与机器学习,评估软件的可利用性,适用于动态环境中的有效性验证[^3]。 - **ARM Emulator Tools**:如 Unicorn Engine、QEMU ARM 模拟器,可用于构建定制环境进行逆向分析。 #### 4. 防御与对抗策略 - **多层架构**:使用多个异构并行运行,增加检测难度。 - **行为混淆**:模拟真实用户行为,如生成随机点击、滑动事件。 - **动态加载技术**:将敏感逻辑封装在加密的 DEX 或 SO 文件中,避免被静态分析发现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值