怎么保护android游戏中的图片资源

You_and_Me12 2012-07-23 12:28:47
一般情况下,将开发过程的图片资源放置在drawable中,打包成apk后是可以被获取到资源图片等。

但是许多游戏中的图片是获取不到的,当然肯定有方式可以保护这些资源的。

求助!
希望能给个方法。
...全文
859 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
You_and_Me12 2012-09-09
  • 打赏
  • 举报
回复
虽然没有得到较好的答案,还是结贴了吧!

博客文章讲述一些探索的方法:http://blog.csdn.net/you_and_me12/article/details/7959349

还希望有大神指教一下。。。THX!!!
You_and_Me12 2012-08-18
  • 打赏
  • 举报
回复
求具体方法,步骤。。。。。。。
RDroid 2012-08-18
  • 打赏
  • 举报
回复
1.在pc上,将图片文件进行处理,比如加密
2.把处理后的资源放入 res\raw 目录里
3.需要加载图片时,从 raw 里读取资源,进行加密的反向处理,转换成图片
booooo­ 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:

最简单的一个办法就是,先将图片资源都放在assets目录下,程序第一次启动时,通过流方式将这些图片资源都转移到程序的私有目录下(./data/data/<package name>/files/)路径下,该路径是私有的

然后再把assets目录下的所有文件都删掉

这样以后直接从私有目录中读文件就行了

以上做法在技术上稍微有点复杂,而且不能防止已经……
[/Quote]

其实LZ可以按照楼上所说的那样,给文件加密;

具体是说,将你程序中所用到的外部文件,同意存放至一个目录中或其子目录中

然后通过I/O为每个文件的头和尾添加额外的字节数,使其文件被加密

之后,文件的命名可以不按照常理,比如正常的图片应该是:xxx.jpg OR xxx.png等,带着后缀的命名,你可以为每个被加密后的文件计算其MD5,然后就用这个MD5命名该文件,没有后缀,没有标示,它就是一个文件存在那

这样的文件放到那,估计它谁也不可能打开,即使它拿到文件流,也无用,因为你加密过了;

至于你的程序怎么打开这些文件,我就不用多说了吧,相信LZ肯定知道

不知道这种办法是否符合你的要求
zhuxr2003 2012-07-30
  • 打赏
  • 举报
回复
把图片转换为Base64字符串,再用sqlite数据库保存,字符串可以适当加密。使用图片要把Base64字符串转换为图片。
You_and_Me12 2012-07-27
  • 打赏
  • 举报
回复
顶一下,来人啊
AMinfo 2012-07-27
  • 打赏
  • 举报
回复
还是做图片文件加密吧,最简单的一个办法,将文件名扩展名改名,然后在这些图片文件里面的前面加上几个字节,使文件无法被正常,你在代码中处理的时候,读这个图片文件的时候,读出来后要去掉前面的几个多余的字节。
You_and_Me12 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

最简单的一个办法就是,先将图片资源都放在assets目录下,程序第一次启动时,通过流方式将这些图片资源都转移到程序的私有目录下(./data/data/<package name>/files/)路径下,该路径是私有的

然后再把assets目录下的所有文件都删掉

这样以后直接从私有目录中读文件就行了

以上做法在技术上稍微有点复杂,而且不能防止已经Root的机器访问,只不过它做起……
[/Quote]
这样会占据内存的吧,而且这样一点用处都没有吧,assets的文件一样在apk中可以看到。
我要的是apk文件中无法看到资源
一刀 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

图片加密,用的时候读出来恢复
剩下的就是加密算法的问题了
可以直接用XOR,这个最简单,或在特定的地方加入垃圾数据。。。。

你指的是先将图片转成十六进制之类的数据,然后读取吗?
[/Quote]

十六进制?十六进制是描述二进制数据的一种表达方式,计算机中任何数据都是以二进制存放的。。。
booooo­ 2012-07-27
  • 打赏
  • 举报
回复
最简单的一个办法就是,先将图片资源都放在assets目录下,程序第一次启动时,通过流方式将这些图片资源都转移到程序的私有目录下(./data/data/<package name>/files/)路径下,该路径是私有的

然后再把assets目录下的所有文件都删掉

这样以后直接从私有目录中读文件就行了

以上做法在技术上稍微有点复杂,而且不能防止已经Root的机器访问,只不过它做起来稍微简单点,对已赶时间的人来说

希望对你有用
  • 打赏
  • 举报
回复
这个问题确实是个问题!
大掌教 2012-07-23
  • 打赏
  • 举报
回复
有办法么,还真不知道。同求解
一刀 2012-07-23
  • 打赏
  • 举报
回复
图片加密,用的时候读出来恢复
剩下的就是加密算法的问题了
可以直接用XOR,这个最简单,或在特定的地方加入垃圾数据。。。。
BUXINGLE 2012-07-23
  • 打赏
  • 举报
回复
你确定你说的那些游戏中用的图片不是画出来的么
You_and_Me12 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你确定你说的那些游戏中用的图片不是画出来的么
[/Quote]

总用方式可以将资源隐藏了,用buffer的方式或许也可以。
我看过微云的游戏引擎(好像是微云),好像是将图片打包成.lpk,然后就看不到了啊
You_and_Me12 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

图片加密,用的时候读出来恢复
剩下的就是加密算法的问题了
可以直接用XOR,这个最简单,或在特定的地方加入垃圾数据。。。。
[/Quote]
你指的是先将图片转成十六进制之类的数据,然后读取吗?

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧