客户端资源加密
资源是我们游戏中用的的图片,纹理,或者声音,追根到底,计算机只识别 0和1,所以不管在磁盘还是内存,存储单元都是0和1,所以这些资源都是可以读取二进制的方式读取到内存中的。
图片简单理解为是一组由特定格式二进制字节组成的文件,计算机根据这种方式读取,就能识别出这是图片格式,就知道该怎么显示,所以对图片的加密是把图片以二进制文件方式读取,再对二进制流进行算法加密,别人即使拿到这个文件,因为不知道加密方式,所以也无能为力。那么图片文件加密了,我们的读取图片文件的方式也要修改了,读取的时候,先将文件以二进制方式读取,然后逆向解密,得出正常的图片二进制文件,然后就交给引擎去读取,这属于初级加密,因为这是以单个文件为单位的加密。
初级加密的方式避免不了暴露文件结构以及文件名称,破解程序时候,配合代码或者数据表,很容易猜测到加密方式,那么我们就要破除这种文件目录格式,我们采用将所有资源依次进行二进制读取,然后写进一个文件的方式,这个文件其实也是个大的二进制流文件,只不过我们知道这个文件的结构,前8位用来存储有多少个图片被存进来,接着是个一个一个图片单元,其中图片单元由图片路径(之前图片的文件结构)、图片流长度以及图片流组成。接着对这个文件进行加密,MD5,RSA或者DES。这样这个文件就不会让人想要是我们游戏中的图片了,然后在我们游戏读取图片的时候,传入图片路径,就能在这个流二进制文件中找到相应的二进制流了,进行引擎读取了。
然后这个思路在不同引擎需要不同