Easy Save3游戏存档安全分析
一、简介
在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游戏存档安全分析相关推荐
- Android 游戏存档位置分析
android 游戏存档分析, 这种存档游戏,对android 和ios 系统能通用; android obb 跟据官网介绍:obb没有固定格式,官网给出里zip压缩格式的一个例子,但是大部分游戏都要 ...
- Unity存档探索:PlayerPref、 Easy Save 2、Easy Save3
PlayerPref 非常粗暴,直接使用键值对的方法存储,很适合小游戏使用(flappy bird之类) 在Windows平台下,PlayerPrefs被存储在注册表的 HKEY_CURRENT_US ...
- 4399游戏存档的那些事儿
4399游戏存档的那些事儿 本文旨在简单分析4399游戏存取档的加解密 工具在吾爱都有提供下载 工具名称 用途 ffdec 反编译swf文件 charles 抓包 开发IDE(随意) 存档加解密复现 ...
- unityplayerpre存档_c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来...
在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. 我的理解是通过某个特殊的标签来保存在本地,而且该标签为key的意思,初始值不用赋值. 在游戏开发中较为实用. 暂时用到了 Se ...
- C1_任务01_修改游戏存档(植物大战僵尸)
C1_任务01_修改游戏存档(植物大战僵尸) 干什么 需求说明 怎么干 理解需求 准备工作 工具 正式开干 试玩 分析存档 跳关 修改金币 心得 干什么 需求说明 修改游戏存档文件,实现跳关至5-5, ...
- 几十款游戏的简单分析
文章目录 一. 介绍 二. 影响游戏体验的因素 三. 游戏能爆火的因素 1.影响游戏爆火因素的排名 2.玩游戏的两种经典心理 3.经典案例分析 Qq农场 植物大战僵尸 水果忍者 召唤神龙 羊了个羊 4 ...
- c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来
在游戏会话中储存和访问游戏存档.这个是持久化数据储存,比如保存游戏记录. 我的理解是通过某个特殊的标签来保存在本地,而且该标签为key的意思,初始值不用赋值. 在游戏开发中较为实用. 暂时用到了 Se ...
- Cocos2d-x学习笔记(三十)之 游戏存档
游戏中的存档功能可以保证玩家在游戏过程中有足够的延续性,这点在单机游戏开发中尤为重要.Cocos2D-x中支持的游戏存档类CCUserDefault可以作为一个轻量化的数据库来使用.它支持存储的数据类 ...
- unity 编辑器存档_Unity教程 | 自制简易的游戏存档系统
原标题:Unity教程 | 自制简易的游戏存档系统 本文将为大家分享如何在Unity中实现简单的游戏存档系统,其中不会包含太多实际的代码,仅介绍在制作过程中需要考虑与解决的问题.该系统由一个学生团队为 ...
最新文章
- 前端模块化开发学习之gulpbrowserify篇
- springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
- [JAVA] IOException: Invalid byte 2 of 2-byte UTF-8 sequence(解决办法)
- 滑动轨迹 曲线 python_python – 计算轨迹(路径)中的转折点/枢轴点
- ORACLE监听问题
- 北京的201个蓝天之清晨随拍
- php遗漏,PHP被遗漏的执行函数
- 数据结构之二叉查找树
- 小米8 微信支付 java_小米微信WAP支付SDK接入指南
- Android网络验证逆向,【Android逆向】去除无聊的网络验证弹窗与360加固
- 为什么Eclipse Iceoryx使用Helix QAC
- k8s部署-43-带你深入学习ingress-nginx(下)
- 处理海量数据的方法与思路
- 平均值,标准差,方差,协方差,期望,均方误差
- Andriod中如何新建lunch项
- oracle怎么对账,Oracle EBS 如何月结、对账[Z]
- 杜甫写的有关风雨的古诗有哪些
- Linux内核学习系列(7)——execve与需求加载
- Quartus II 13.0 添加器件库教程(包含下载地址)
- 哈希算法--暴雪的mpq技术
热门文章
- PCB设计软件+视频教程 Candece Allegro16.3 PADS9.5 protel99SE
- 装完win11显示版本是win10怎么回事?
- 太阳诱电|什么是低频振荡?低频振荡名词解释
- hbase数据库_hbase数据库操作
- dbms是处于计算机硬件,数据库原理与实践(欧利松)-中国大学mooc-题库零氪
- python(二十三)
- python arduino电子书_Arduino电子设计实战指南:零基础篇 PDF 高清版
- ps 置换滤镜制作文字人像
- 2018春节数据盘点:钱包对不起,反正别人也花了很多
- javascript 随机取任意四个字母和随机生成一个名字