一、简介

在Unity3d商店中看到一款存档读档的插件,下载量挺大的,找了个试用版本的玩了下,使用确实挺方便。而且支持不止对数据对存储,包括类对象、资源文件等。

二、简单的测试使用

简单的直接存储一个整型:

ES3.Save<int>("123",1);
int v = ES3.Load<int>("123");

或者一个对象:

TestStruct testStruct = new TestStruct();
testStruct.id = 0x11111;
testStruct.name = "32131";
testStruct.pic = 1981;
ES3.Save<TestStruct>("1234", testStruct);
TestStruct v1 = ES3.Load<TestStruct>("1234");

采用默认文件存储,存储在/sdcard/Android/data/[packagename]/files下,对应内容:

支持AES加密,加密后存入数据。

var settings = new ES3Settings(ES3.EncryptionType.AES, "myPassword12345612345678");
ES3.Save<TestStruct>("12345", testStruct, Application.persistentDataPath + "/TestEncode.es3", settings);
TestStruct v2 = ES3.Load<TestStruct>("12345", Application.persistentDataPath + "/TestEncode.es3", settings);

三、分析

1、优势
(1)代码全采用C#开发,基本不涉及平台相关,维护和跨平台都十分方便;
(2)存档和读档基本只需一条语句即可实现,二次开发成本低;
(3)多功能的支持,如自动存档。

2、劣势
(1)默认处理不做加密强度基本不保障,而且数据保存在sdcard,篡改本地数据非常方便;
(2)加密后采用的AES标准算法,只需要找到密钥就能达到篡改数据的目的。
数据篡改只考虑本地静态数据篡改实现。

四、改进方案

1、考虑基于平台的代码保护,将数据解析存储代码最好通过C/C++实现;
2、键值考虑不使用有意义的字符串,使用宏定义的数字或无意义字符串;
3、采用多层嵌套自定义加密;
4、针对存档数据有独立的哈希校验;
5、json格式保存,考虑转化为另外一种独立的格式或者文件结构,和json可以进行相互关联转化,自定义格式更方便本地存取,无需读取整个文件。

Easy Save3游戏存档安全分析相关推荐

  1. Android 游戏存档位置分析

    android 游戏存档分析, 这种存档游戏,对android 和ios 系统能通用; android obb 跟据官网介绍:obb没有固定格式,官网给出里zip压缩格式的一个例子,但是大部分游戏都要 ...

  2. Unity存档探索:PlayerPref、 Easy Save 2、Easy Save3

    PlayerPref 非常粗暴,直接使用键值对的方法存储,很适合小游戏使用(flappy bird之类) 在Windows平台下,PlayerPrefs被存储在注册表的 HKEY_CURRENT_US ...

  3. 4399游戏存档的那些事儿

    4399游戏存档的那些事儿 本文旨在简单分析4399游戏存取档的加解密 工具在吾爱都有提供下载 工具名称 用途 ffdec 反编译swf文件 charles 抓包 开发IDE(随意) 存档加解密复现 ...

  4. unityplayerpre存档_c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来...

    在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. 我的理解是通过某个特殊的标签来保存在本地,而且该标签为key的意思,初始值不用赋值. 在游戏开发中较为实用. 暂时用到了 Se ...

  5. C1_任务01_修改游戏存档(植物大战僵尸)

    C1_任务01_修改游戏存档(植物大战僵尸) 干什么 需求说明 怎么干 理解需求 准备工作 工具 正式开干 试玩 分析存档 跳关 修改金币 心得 干什么 需求说明 修改游戏存档文件,实现跳关至5-5, ...

  6. 几十款游戏的简单分析

    文章目录 一. 介绍 二. 影响游戏体验的因素 三. 游戏能爆火的因素 1.影响游戏爆火因素的排名 2.玩游戏的两种经典心理 3.经典案例分析 Qq农场 植物大战僵尸 水果忍者 召唤神龙 羊了个羊 4 ...

  7. c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来

    在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. 我的理解是通过某个特殊的标签来保存在本地,而且该标签为key的意思,初始值不用赋值. 在游戏开发中较为实用. 暂时用到了 Se ...

  8. Cocos2d-x学习笔记(三十)之 游戏存档

    游戏中的存档功能可以保证玩家在游戏过程中有足够的延续性,这点在单机游戏开发中尤为重要.Cocos2D-x中支持的游戏存档类CCUserDefault可以作为一个轻量化的数据库来使用.它支持存储的数据类 ...

  9. unity 编辑器存档_Unity教程 | 自制简易的游戏存档系统

    原标题:Unity教程 | 自制简易的游戏存档系统 本文将为大家分享如何在Unity中实现简单的游戏存档系统,其中不会包含太多实际的代码,仅介绍在制作过程中需要考虑与解决的问题.该系统由一个学生团队为 ...

最新文章

  1. 前端模块化开发学习之gulpbrowserify篇
  2. springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
  3. [JAVA] IOException: Invalid byte 2 of 2-byte UTF-8 sequence(解决办法)
  4. 滑动轨迹 曲线 python_python – 计算轨迹(路径)中的转折点/枢轴点
  5. ORACLE监听问题
  6. 北京的201个蓝天之清晨随拍
  7. php遗漏,PHP被遗漏的执行函数
  8. 数据结构之二叉查找树
  9. 小米8 微信支付 java_小米微信WAP支付SDK接入指南
  10. Android网络验证逆向,【Android逆向】去除无聊的网络验证弹窗与360加固
  11. 为什么Eclipse Iceoryx使用Helix QAC
  12. k8s部署-43-带你深入学习ingress-nginx(下)
  13. 处理海量数据的方法与思路
  14. 平均值,标准差,方差,协方差,期望,均方误差
  15. Andriod中如何新建lunch项
  16. oracle怎么对账,Oracle EBS 如何月结、对账[Z]
  17. 杜甫写的有关风雨的古诗有哪些
  18. Linux内核学习系列(7)——execve与需求加载
  19. Quartus II 13.0 添加器件库教程(包含下载地址)
  20. 哈希算法--暴雪的mpq技术

热门文章

  1. PCB设计软件+视频教程 Candece Allegro16.3 PADS9.5 protel99SE
  2. 装完win11显示版本是win10怎么回事?
  3. 太阳诱电|什么是低频振荡?低频振荡名词解释
  4. hbase数据库_hbase数据库操作
  5. dbms是处于计算机硬件,数据库原理与实践(欧利松)-中国大学mooc-题库零氪
  6. python(二十三)
  7. python arduino电子书_Arduino电子设计实战指南:零基础篇 PDF 高清版
  8. ps 置换滤镜制作文字人像
  9. 2018春节数据盘点:钱包对不起,反正别人也花了很多
  10. javascript 随机取任意四个字母和随机生成一个名字