日本游戏常用加密压缩算法

您所在的位置:网站首页 日本游戏存档 日本游戏常用加密压缩算法

日本游戏常用加密压缩算法

2024-01-29 20:11| 来源: 网络整理| 查看: 265

嘛,一般你会看到这样的信息:程序破解员:分析游戏的加密方式,能写基本的文件解包工具和打包工具,能对加了密的游戏文本进行抽取,还原并进行编辑。懂得汇编和反汇编以及一门熟悉的编程语言,懂得一些常见的压缩算法(如:LZ777,ZLIB等)日本的游戏不管是PC还是掌机都会因为版权的问题将除去游戏框架以外的资源文件单独归档加密存储我们讨论 最常见的 最简单日本游戏常用的压缩和加密算法这里不是密码学/压缩课程,如果需要了解更多 去买本书吧简单加密伪代码:(我懒得写读写文件部分,自己写去)while (!fileEnd) {         // 遍历文件  byte dataByte = readByte(); // 读入一个字节   加密方法(加密内容,加密key);  writeByte(dataByte);     // 写到新文件里}加密方法方法1:直接进行一些简单运算:dataByte=-dataByte;dataByte=+1;方法2:XOR至今我见过的一些加密技术都是基于XOR操作符的比如明天天晴,染红A XOR B=C,则有C XOR B=A,或C XOR A=B当然这只是最简单的加密,但是这个方法虽然简单,但是仍然有人使用,毕竟游戏速度还是很必要的除了XOR 某个字符,XOR文件内的偏移地址也很常用,比如游魂写出来很简单:dataByte ^= 0xaa;//染红加密方式XOR 16进制的AA,明天天晴是FF一些变种的XOR方法// rsftrxstatic void decode_rem_shiftr_xor(BYTE *buf, unsigned int len, DWORD key){BYTE xor = (BYTE)key;for (unsigned int i = 0; i < len; i++)buf[i] ^= key >> (i % 5);}// xrorstatic void decode_xor_ror(BYTE *buf, unsigned int len, DWORD key){BYTE shift, xor;shift = (BYTE)key;xor = (BYTE)((key >> 8) & 0xff);if (!shift)shift = 15; if (!xor)xor = 0xf0;shift &= 7;for (unsigned int i = 0; i < len; i++) {buf[i] ^= xor;buf[i] = (buf[i] >> shift) | (buf[i] BYTE xor = (BYTE)key;for (unsigned int i = 0; i < len; i++)buf[i] = ~(buf[i] ^ (xor + 1));}// xorincstatic void decode_xor_inc(BYTE *buf, unsigned int len, DWORD key){BYTE xor = (BYTE)key;for (unsigned int i = 0; i < len; i++)buf[i] = (buf[i] ^ 0xaf) + 1;}// sftrxstatic void decode_shiftr_xor(BYTE *buf, unsigned int len, DWORD key){for (unsigned int i = 0; i < len; i++)buf[i] = buf[i] ^ (BYTE)(key >> 3);} Crypto Checker一个简单的命令行工具,用于分析程序用了什么加密算法.

下面介绍的加密网络上有现成的代码.net java有现成类库 如果不清楚怎么用去查baidu MD5加密EGO  山本大妈后期游戏脚本使用MD5 加密 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。游戏中也经常使用key函数来快速定位需要读取的数据在资源文件中的位置。http://baike.baidu.com/view/604021.htmBlowFish加密BlowFish是对称加密算法的其中一种,与前面介绍的单向散列函数不同,BlowFish加密后的数据是可逆的。由于BlowFish加密/解密速度快,更重要的是任何人都可以免费使用不需要缴纳版权费,所以有不少游戏都采用BlowFish加密资源文件数据。比如: ef - the first tale.介绍: http://baike.baidu.com/view/2208941.htmCRC严格说CRC 不是加密,是一种校验手段,反正就是防止你修改他的东西很多游戏的Patch 比如C3 1.10Patch的就是有CRC介绍:http://baike.baidu.com/view/80377.htm压缩部分多数商业游戏并不会将图片资源以可以直接打开的常用格式存放,而是会做一定的压缩处理,这样做有两个好处:其一,图片不易被用户直接修改或用于其他用途;其二,减小游戏图片资源所占用的磁盘空间。现在的压缩算法很多,选择那一种好呢?大家一定会想到在网页上常用到的JPEG格式和GIF格式,但是这两种算法都不适合在游戏中使用。就游戏开发来说,我们必须选择一种压缩率高、解码速度又快的算法。如果采用JPEG无损压缩算法,那么压缩率就不高,采用有损压缩的话虽然压缩率很高但在游戏中图像是不能有所损坏的。还有,JPEG算法的一个最大缺点就是解码速度太慢。GIF算法性能很高,压缩率高解码又快,只可惜它不能压缩超过256色的图像。但如果您做的游戏是 256色的话,那么使用GIF算法是再好不过的了。一般 游戏采用PNG和BMP其中PNG使用类似Zlib压缩算法Lz77,Huffman,Lzw,rle都是经典的压缩算法~网络上有现成的代码我遇到有Huffman 压缩算法游魂就采用这个Huffman+LZW算法一般来说日本游戏最常见的两种莫过于LZSS和ZlibLZSShttp://zh.wikipedia.org/zh-cn/LZ77%E4%B8%8ELZ78http://en.wikipedia.org/wiki/LZSS采用LZSS实现的范例: 微软以前常使用的compress.exe/expand.exeGba的bios里用的压缩算法就是Lz77的变种算法LzSS这里 直接给大家一个库 方便大家使用也就是NDS GBA内置算法 http://download.csdn.net/source/1425147需要注意的是LZSS LZ77都有很多变种算法,要具体分析 比如LZSS+HuffmanZlibhttp://baike.baidu.com/view/2258413.htm获得zlibzlib的主页是:http://www.zlib.net/使用Zlib压缩的游戏:妹汁对于Java zlib is already included as part of the Java SDK in the java.util.zip packageC# 可以用这个:http://blog.csdn.net/luozhuang/archive/2008/11/30/3415669.aspxzip压缩这个应该不太常见,但不是没有人用 战地风云2就是用ZIP(11区游戏扯到那个国家去了)C# 没有自带压缩解压缩ZIP的类库方法有几个:1 使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx2 使用winrarwinrar有个命令行工具,国内某个著名公司软件就用这种方法,不过压缩的是RAR格式3http://dotnetzip.codeplex.com/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3