object c 归档和解档,其实就是java中的序列化和反序列化

Java反序列化漏洞实战:普元EOS中间件CC6变种利用链分析与防御 Java反序列化漏洞是Java安全领域的经典高风险问题,其核心原理在于应用程序对不可信的序列化数据流进行反序列化操作时,未进行严格的类名白名单校验。攻击者可利用ClassPath中存在的危险类(如Apache Commons Collections库中的Transformer相关类)构造一条从反序列化入口点到危险操作(如命令执行)的调用链(Gadget Chain),从而实现远程代码执行。这项技术的价值在于深刻揭示了依赖库安全与企业级应用架构风险之间的关联,在金融、电信等核心业务系统的中间件安全中尤为重要。 阅读详情
//
//  main.m
//  YuFaJinJie
//
//  Created by 千雅爸爸 on 16/10/6.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
//归档和解档achiver unachiver,数据持久化的方式,
//一种是plist文件一种是nsuserdefault,这两种都是操作的系统给的类型,例如字典和数组
//现在有一种可以自定义的类型的存储,这个是不是有点像java的serialization?

//在相应的类中,要进行归档必须要实现协议nscoding,正式的协议就是java里面的接口,和java里面要实现序列化就要实现serilization的接口一样,这里要实现nscoding
//@interface Person : NSObject <NSCoding>

void guidanjiedang(){
    Person *person = [[Person alloc] init];
    person.name = @"Tom";
    person.age = 20;
    person.sex = @"male";
    //归档器的类叫做NSKeyedArchiver,里面有一个类方法
    NSData *personData = [NSKeyedArchiver archivedDataWithRootObject:person];
    NSLog(@"二进制:%@",personData);
    //写入到文件中
    [personData writeToFile:@"/Users/JiYi2013/Desktop/guidang" atomically:YES];
    
    //从文件中读取,二进制,然后转化为类
    personData = [NSData dataWithContentsOfFile:@"/Users/JiYi2013/Desktop/guidang"];
    Person *unachiverperson2 = [NSKeyedUnarchiver unarchiveObjectWithData:personData];
    NSLog(@"unachiver解档:%@",unachiverperson2);
    
    
    //多个类型的归档和解档
    Person *person2 = [[Person alloc] init];
    person2.name =@"java";
    person2.age = 20;
    person2.sex = @"null";
    
    NSMutableData *mutabledata = [NSMutableData data];
    NSKeyedArchiver *personMutableAchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mutabledata];
    [personMutableAchiver encodeObject:person forKey:@"person"];
    [personMutableAchiver encodeObject:person2 forKey:@"person2"];
    //一定要结束归档,不然会一只归档
    [personMutableAchiver finishEncoding];
    NSLog(@"%@",mutabledata);
    
    //多个类型的解档
    NSKeyedUnarchiver *personMutableUnachiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:mutabledata];
    Person *decodeperson = [personMutableUnachiver decodeObjectForKey:@"person"];
    Person *decodeperson2 = [personMutableUnachiver decodeObjectForKey:@"person2"];
    NSLog(@"解档:反序列化:person:%@",decodeperson);
    NSLog(@"解档:反序列化:person2:%@",decodeperson2);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        guidanjiedang();
    }
    return 0;
}


person:

//
//  Person.h
//  YuFaJinJie
//
//  Created by 千雅爸爸 on 16/10/6.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import <Foundation/Foundation.h>

//要进行归档必须要实现协议nscoding,正式的协议就是java里面的接口,和java里面要实现序列化就要实现serilization的接口一样,这里要实现nscoding
@interface Person : NSObject <NSCoding>

//NSData 是oc里面存储二进制的,

@property(nonatomic,copy) NSString *name;
@property(nonatomic,assign) NSInteger age;
@property(nonatomic,copy) NSString *sex;


@end

//
//  Person.m
//  YuFaJinJie
//
//  Created by 千雅爸爸 on 16/10/6.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Person.h"

@implementation Person

//归档achiver的时候,也就是序列化的时候,会自动的调用这个方法
- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeObject:_name forKey:@"name"];
    [coder encodeInteger:_age forKey:@"age"];
    [coder encodeObject:_sex forKey:@"sex"];
}

//接档unachiver
- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super init];
    if(self){
        _name = [coder decodeObjectForKey:@"name"];
        _age = [coder decodeIntegerForKey:@"age"];
        _sex = [coder decodeObjectForKey:@"sex"];
    }
    return self;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"name=%@,age=%ld,sex=%@", _name,_age,_sex];
}
@end







Java反序列化漏洞实战:利用JavaDeserH2HC复现Jboss CVE-2017-12149 Java反序列化是一种将字节流还原为内存对象的机制,广泛应用于远程调用和数据持久化场景。其安全风险在于,如果反序列化过程未对输入数据进行验证,攻击者可通过构造恶意序列化对象,触发预设的利用链(Gadget Chain),从而在目标系统上执行任意代码,实现远程命令执行(RCE)。这种漏洞在Java生态中影响深远,尤其在企业级中间件如Jboss、WebLogic中屡见不鲜,对系统安全构成严重威胁。本文聚焦于Jboss中间件中经典的CVE-2017-12149反序列化漏洞,该漏洞源于HttpInvoker组件默认 阅读详情

相关推荐

PHP反序列化漏洞深度解析:从原理到POP链实战攻防

序列化与反序列化是数据持久化和网络传输中的基础技术,其核心原理是将复杂数据结构转换为可存储或传输的线性格式(如字符串),并在需要时还原。这一机制在PHP中通过serialize()和unserialize()函数实现,广泛应用于会话管理、缓存和远程调用等场景。然而,当用户可控的输入被直接传递给unserialize()时,便构成了严重的安全风险。攻击者通过精心构造的序列化字符串,可以覆盖对象属性并触发PHP魔术方法(如__destruct()、__wakeup())中的危险逻辑,实现从属性覆盖到任意代码执行

weixin_34043301的博客 367

Java实现文件的归档和解档

这篇文章主要为大家详细介绍了Java实现文件的归档和解档,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Java实现文件归档和解档的具体代码,供大家参考,具体内容如下 文件的归档 package cn.yimen.archiver; import java.io.ByteArrayOutputStream; import java.io.File; import jav...

sssspider的博客 685

Java反序列化漏洞深度解析:从JMXInvokerServlet到企业级安全加固

Java反序列化是Java平台中用于对象持久化和网络传输的核心机制,其原理是通过ObjectInputStream将字节流还原为内存中的对象。然而,这一机制若处理不当,攻击者可通过构造恶意的序列化数据,在反序列化过程中触发预设的利用链(Gadget Chains),从而执行任意代码,实现远程代码执行(RCE),对系统安全构成严重威胁。其技术价值在于深刻揭示了功能设计、默认配置与安全边界之间的冲突,是理解应用层漏洞的经典案例。在应用场景上,此类漏洞常见于依赖反序列化进行远程通信的中间件、框架及微服务组件中。本

weixin_30872157的博客 443

Java复习之知识点整理(十二)----字节流、字符流、转换流、缓冲流、skip、归档、解归档

一、IO流-------------------------------------------------------------- 1.处理设备之间的数据传输 二、字节流(InputStream,OutputStream)------------------------------------------------------------- 1.InputStream和OutputStre...

xcvbxv01的博客 273

JBoss JMXInvokerServlet反序列化漏洞实战:从原理到内网渗透

Java反序列化漏洞是Web安全领域中的一种高危漏洞类型,其原理在于应用程序在反序列化不可信数据时,未进行充分验证,导致攻击者可以构造恶意序列化对象,在目标服务器上执行任意代码。这项技术的核心价值在于它绕过了传统的应用层防护,直接作用于运行时环境,常被用于获取服务器初始权限。在实战渗透测试中,此类漏洞在内网横向移动和权限维持阶段扮演着关键角色,尤其常见于JBoss、WebLogic等遗留中间件系统。本文以经典的JBoss JMXInvokerServlet反序列化漏洞为例,深入剖析其利用链构造,并结合yso

weixin_30367873的博客 476

从CVE-2018-14667到Richsploit:Java反序列化漏洞的攻防实战解析

Java反序列化漏洞是Web安全领域长期存在的核心威胁之一,其原理在于攻击者通过构造恶意序列化数据,在目标服务器上触发非预期的对象反序列化过程,从而执行任意代码。这类漏洞的技术价值在于其往往能绕过常规输入过滤,直接利用应用框架或依赖库的合法功能实现深度攻击。在Java EE生态中,RichFaces组件库曾因此类漏洞(CVE-2018-14667)而备受关注,攻击者可利用其资源加载机制,通过远程JAR文件触发反序列化链。Richsploit作为一款集成了漏洞检测、Payload生成与利用链管理的综合性工具箱

weixin_30326515的博客 379

Java 文件归档和解归档

将各种类型的文件统一放入.yar 文件下package cn.yif.Archiver; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays...

e31006的博客 1637

使用kmplot在线进行生存分析

欢迎关注”生信修炼手册”!kmplot是一个生存分析的在线工具,最初是设计用来对肝癌中的miRNA进行生存分析,对应的文章发表在scientific reports上,链接如下https...

庐州月光的博客 1万+

Java 和 Object-c的区别

## 声明部分和实现部分 oc的创建是command+n的按钮,然后选择os-x 里面的Cocoa classoc的声明和实现是在不同的文件中,声明是在头文件.h文件中,实现是在.m(message的缩写)的文件中, Phone.h #import @interface Phone : NSObject { //声明成员变量,成员变量一定要以下划线开头 @publ

Kodulf的专栏 2424

Frida实战:如何用adb快速连接网易mumu模拟器进行参数Hook(附常见CPU架构问题排查)

本文详细介绍了如何使用Frida和adb快速连接网易MuMu模拟器进行参数Hook,包括环境配置、架构适配、Frida-server部署及常见问题排查。特别针对CPU架构兼容性问题提供了实用解决方案,帮助开发者高效完成逆向调试任务。

weixin_29274969的博客 289

ubuntu恢复分区表——testdisk

testdisk恢复ubuntu分区表testdisk介绍安装testdisk使用testdisk恢复分区表 testdisk介绍 testdisk 具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,也经常被用来恢复被误删的文件。 安装testdisk 如果系统分区表被删除,需要使用ubuntu的启动盘,选择try ubnutu模式进入试用系统。 1、可以直接在终端安装testdisk: sudo apt-get install testdisk 通过命令直接打开testdisk: t

ZNestor的博客 6459

c语言 序列化,序列化和反序列化

定义以及相关概念互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的协议,序列化和反序列化属于通讯协议的一部分。通讯协议往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP协议是一个四层协议,而OSI模型却是七层协议模型。在OSI七层协议模型中 展现层(Presentation Layer)的主要功能是把应用层的对象转换成一段连续的二进制串,或者反过来,把二进制...

weixin_28668743的博客 3079

硅传CC1310二次开发必备:手把手教你用JTAG解锁被锁定的Flash存储器

本文针对硅传CC1310模块二次开发中常见的Flash锁定问题,提供了从原理剖析到实战操作的完整解决方案。详细介绍了如何使用Uniflash和Flash Programmer 2等工具进行Flash解锁和擦除,并强调了硬件连接稳定性与供电质量的关键作用,帮助开发者彻底解决烧录障碍,为后续应用开发铺平道路。

weixin_29189373的博客 254

【IPHONE开发-OBJECTC入门学习】对象的归档和解归档

转自:http://blog.youkuaiyun.com/java886o/article/details/9046967 #import<Foundation/Foundation.h> #import"Person.h" intmain(intargc,constchar*argv[]) { @aut...

diyuan365760的专栏 126

【附代码】SSVEP解码算法 - 扩展典型相关分析(eCCA)

本文主要对SSVEP解码算法-eCCA进行复现和测试。本文提供程序的所有代码,只要在Matlab上即可运行。读者可以根据程序自主调整,方便学习以及初学者更好地了解SSVEP的经典算法。

计算机小白 1334

ARM系统控制和管理接口System Control and Management Interface

本文档描述了一个可扩展的独立于操作系统的软件接口,用于执行各种系统控制和管理任务,包括电源和性能管理。 本文档描述了系统控制和管理接口(SCMI),它是一组操作系统无关的软件接口,用于系统管理。

AI-安全-功耗 1913

object c 数据持久化的方式

1: plist 2:归档和解档(相当于java的序列化和反序列化) 3:NSUserDefault(相当于android的share preference)

Kodulf的专栏 481

基于电阻分压 + 电压跟随器的直流母线电压采样电路

摘要:本文介绍了一种基于电阻分压和电压跟随器的直流母线电压采样电路设计。该电路通过R38(240kΩ)和R41(20kΩ)组成的分压网络将高电压(如48V)降至3V,再经GS8331运放构成的电压跟随器进行隔离缓冲,最后通过RC滤波输出给ADC采集。重点分析了关键元件的选型要求:分压电阻需高精度、低温度系数;运放需高输入阻抗、低失调电压;滤波电容需稳定性好。该设计适用于工业电源、新能源BMS、变频器等需要高精度电压采样的应用场景。

qq_37999850的博客 890

Objective-C中的文件归档

所谓对象归档是指将对象的zhuang'ta

了凡 1042

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3437

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java反序列化漏洞实战:CVE-2017-12149原理、复现与防御

Java反序列化是一种将字节流还原为内存对象的机制,广泛应用于远程调用和数据持久化。其核心原理在于ObjectInputStream读取序列化数据并重建对象。然而,若反序列化过程未对输入数据进行严格校验,攻击者便可构造恶意序列化对象,触发目标类库中危险方法的执行链,从而实现远程代码执行,对系统安全构成严重威胁。这一漏洞模式在诸多Java中间件和框架中屡见不鲜,成为企业应用安全的重大隐患。本文以经典的JBoss中间件反序列化漏洞为例,深入剖析其利用链构造与实战复现过程,并探讨有效的安全加固方案。

mybwu_com的专栏 375

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PHP反序列化漏洞原理与实战:从Pikachu靶场到POP链构造

反序列化是一种将序列化数据恢复为对象的过程,广泛应用于数据存储和网络传输。其核心原理在于程序在还原对象时,若未对输入数据进行充分验证,攻击者可通过精心构造的序列化字符串,在对象重建过程中触发危险操作。这一技术漏洞在Java、PHP、Python等语言中尤为突出,因其常与面向对象特性深度结合,具有极高的安全风险。在Web安全领域,反序列化漏洞是代码审计和渗透测试的重点,常被用于实现远程代码执行。本文以经典的Pikachu靶场为实验环境,深入解析PHP中`unserialize()`函数的安全缺陷,并详细演示如

weixin_34032621的博客 562

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Objective-C 单例、用户首选项(UserDefaults)、对象归档

关于单例,第一次真正的了解是在做

Young ~ 1246

PHP反序列化漏洞:从原理到实战的Web安全攻防解析

序列化与反序列化是计算机科学中用于数据持久化与网络传输的基础技术,其核心原理是将复杂的数据结构(如对象)转换为可存储或传输的字符串格式,反之亦然。在PHP语言中,这一机制通过serialize()和unserialize()函数实现,为应用程序状态管理提供了便利。然而,当不可信的用户输入被直接传递给unserialize()函数时,其技术价值便可能转化为严重的安全风险。攻击者通过精心构造的序列化字符串,可以操控PHP解释器在反序列化过程中自动调用对象的魔法方法(Magic Methods),如__destr

weixin_33965305的博客 420

OC学习篇之---归档和解挡

前几篇文章说到了OC中的Foundation框架:http://blog.youkuaiyun.com/jiangwei0910410003/article/details/41852835,今天我们来看一下OC中的一个重要知识点:归档OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的。当然在操作的这些对象都是需要实现一...

weixin_30480583的博客 92

Java反序列化漏洞实战:从CVE-2017-12149剖析Apache Commons Collections利用链

Java反序列化是一种将字节流还原为对象的核心机制,广泛应用于远程调用和数据持久化场景。其安全风险在于,反序列化过程会执行对象中定义的readObject方法,若未对输入进行严格校验,攻击者可通过构造恶意序列化数据触发任意代码执行。这一原理构成了众多Java反序列化漏洞的基础,具有极高的技术价值和广泛影响。在Web应用、中间件及分布式系统中,不安全的反序列化操作常成为远程代码执行的突破口,对系统安全构成严重威胁。本文以经典的JBoss反序列化漏洞(CVE-2017-12149)为切入点,深入分析其利用链。该

weixin_34409357的博客 403
上一篇: NSFileManager文件的创建复制删除遍历 NSFileHandler读取关闭同步 NSUserDefault(类似android shreapreference) plist属性列表
下一篇: object c 数据持久化的方式
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值