1. 游戏文件libcocos2dcpp.so是经过加密的文件吗
具体情况具体分析。
libcocos2dcpp.so 是 Cocos2d-x 游戏引擎的一部分,它是一个库文件,通常用于 Android 平台上的游戏开发。这个库文件本身并不是经过加密的,而是编译后生成的二进制文件。因此,在一般情况下,libcocos2dcpp.so 应该不会被加密。
然而,有些游戏开发者可能会选择对游戏资源进行加密以保护游戏不受盗版或破解的影响。在这种情况下,libcocos2dcpp.so 作为游戏资源之一,也有可能被加密。但具体情况需要根据游戏开发者的策略来判断。
2. 使用cocos2d开发的手游安装包比较大,如何改善
解决方法有三种:
一:优化图片、资源,压缩安装包体积,牺牲一部分手游品质减小安装包体积,这也是比较常见的一种方法;
二:分包技术,资源切割,分段下载,进入游戏前进行二次下载。
三:爱加密的手游压缩技术,通过拆分资源,在保障了游戏品质和游戏体验流畅的情况下,实现资源后台自动加载,最高可以压缩80%。
以上三种解决方法中,爱加密的手游压缩技术是比较完美的一种,既没有影响游戏品质,又可以完美分包,不用二次下载,保障了良好的用户体验。
3. cocos2d游戏png解密工具
可使用基于C++实现的加密和解密工具,源码可从https://github.com/zhangpanyi/EncryptPNG/tree/master/cpp 下载。以下是详细介绍:
4. 关于Cocos2dx-js游戏的jsc文件解密
关于Cocos2dxjs游戏的jsc文件解密,以下是详细的解答:
1. 密钥解密的基本步骤 定位加密选项:在CocosCreator的官方构建流程中,仔细寻找脚本加密选项,这是解密的第一步。 分析APK文件:通过APK分析,确定游戏主要加载的libcocos2djs.so文件,这是解密的关键线索。
2. 加密与解密机制的理解 合并与加密:CocosCreator的构建过程首先合并js文件,随后用xxtea算法进行加密,生成jsc文件。 动态解密:游戏运行时,会动态解密并解压这些js代码,以执行游戏逻辑。
3. 密钥的查找方法 libcocos2djs.so文件:在lib目录下的libcocos2djs.so文件中,xxtea_key函数可能隐藏着解密密钥的线索。 jsbadapter/jsbbuiltin.js:对于某些游戏,密钥可能隐藏在jsbadapter/jsbbuiltin.js中的字符串中。 回调函数:在Cocos2dx应用的生命周期中,applicationDidFinishLaunching函数等回调函数中,可能包含解密所需的密钥信息。
4. 解密工具与技术的使用 Frida Hook技术:通过Frida Hook技术,可以捕获并分析解密函数xxtea_decrypt,从而获取到Key值。 解密工具:市面上的解密工具如jsc解密v1.44等,可以简化查找和操作流程,但具体实施时仍需针对游戏的特性进行分析。
5. 解密策略与后续操作 搜索关键词:在libcocos2djs.so中搜索特定关键词,或深入探究applicationDidFinishLaunching等函数,以找到解密密钥。 处理混淆技术:部分游戏可能使用混淆技术增加解密的复杂性,需要额外的分析和处理。 解密后的使用:一旦解密成功,可以直接使用解密后的js文件进行后续开发或分析。
综上所述,Cocos2dxjs游戏的jsc文件解密需要综合运用多种技术和工具,包括APK分析、密钥查找、解密工具使用以及解密策略的制定等。
5. 如何对cocos2d-x游戏源文件加密
本教程将会教大家如何使用Cocos2d-x来做一个基于tile地图的游戏,当然还有Tiled地图编辑器。(我们小时候玩的小霸王小学机里面的游戏,大部分都是基于tile地图的游戏,如坦克大战、冒险岛、吞食天地等)我们将会创建一个忍者在沙漠中找西瓜吃的小游戏。
在第一部分教程中,我将教大家如何使用Tile来创建地图,怎样把地图加到游戏中,怎么让地图跟随玩家滚动,以及怎样使用对象层。
在第二部分教程中,我将介绍如何在地图中创建可碰撞的区域,如何使用tile属性,如何制作可拾取的物体和动态修改地图,还有确保忍者不要吃撑了!
如果你还没有准备好的话,你可能需要先从《如何用Cocos2d-x3.0制作一款简单的游戏》系列教程开始学起,因为我们这个教程使用了大量的基本概念,而这些概念都可以从上面的教程中获取。
好了,让我们玩一玩tile地图吧!
创建工程骨架
让我们首先创建整个工程的骨架,这样可以确保今后我们需要的文件都包含进来了,并且能够跑起来。
首先工程命名为TileGame。
接下来,下载游戏资源文件。这个资源文件包里包含了以下内容:
玩家sprite。这个图片和《如何用Cocos2d-x3.0制作一款简单的游戏》差不多。
我使用cxfr这个工具制作的一些音效。
我使用GarageBand制作的一些背景音乐。(查看这篇博文获得更多的信息)
我们将会使用的tile集合--它实际上会和tile地图编辑器一块儿使用,但是,我想把它放在这里,余下的事情会变得更容易。
一些额外的“特殊”的tile,我将会在后面加以说明。
一旦你获得了这些资源,解压并把它拖到你的工程的“Resources”分组下面。(编者的话:上面的音频资源都被编者转成了mp3格式)
如果一切顺利,所有的文件应该都在你的工程里了。是时候制作我们的地图了!
使用Tile来制作地图
Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图。(建议大家在安装的时候选择英文,本教程的Tile采用英文的)
下载完之后,直接双击运行。点击File\New,然后会出现以下对话框:
在 orientation部分,你可以选择Orthogonal。Layer format我们也选默认的 Base64(zlib compressed)。
接下来,设置地图的大小。记住,这个大小是以tile为单位的,而不是以像素为单位。我们将创建一个尽量小的地图,因此选择50*50。
最后,你指定每个tile的宽度和高度。你这里选择的宽度和高度要根据你的实际的tile图片的尺寸来做。这个教程使用的样例tile的尺寸是32*32,所以在上面的选项中选择32*32.
接下来,我们把制作地图所需要的tile集合导入进来。点击菜单栏上面的“map”菜单,“NewTileset...”,然后会出现下面的窗口:
为了获得图片,点击“Browse...”按钮,然后定位到工程的的Resources文件夹,选择 tmw_desert_spacing.png文件(我们刚才解压进去的),然后加到工程中去。它会基于文件名自动填充名称。然后把新图快 名称命名为“tmw_desert_spacing.png”.同时,设置下面的Tile spacing和Margin都为1。
你可以保留宽度和高度为32*32,因为tile的实际大小也是这么多。至于margin和spacing,我还没找到任何好的文档解释如何设置这两个值,下面是我的个人看法:
Margin就是当前的tile计算自身的像素的时候,它需要减去多少个像素(宽度和高度都包含在内)。(类比word、css的margin)
Spacing 就是相邻两个tile之间的间隔(同时考虑宽度和高度)(类比word、css的spacing)
如果你看看 tmw_desert_spacing.png,你将会看见每一个tile都有一个像素的空白边界围绕着,这意味着我们需要把margin和spacing设置为1。
一旦你选择ok,你将会看到Tilesets窗口中显示了一些tiles。现在,你可以制作地图了!在Tilesets小窗口,选择一个tile,然后再在地图上的任意位置单击,你就会看到你选中的tile出现在点中的地方了。
因此,继续制作地图吧---充分发挥你的聪明才智!确保增加至少一对建筑物在地图上,因为后面我们需要一些东西来做碰撞。
记住一些方便的快捷方式:
你可以在Tileset拾取器中拖出一个方框,一次选取多个tile。
你可以使用工具栏上的“Bucket Fill Tools”
6. 关于Cocos2dx-js游戏的jsc文件解密
上一期关于Cocos2dx-js游戏的jsc文件解密教程后,收到不少同学反馈,提出了相关问题。本文将对这些问题进行初步分析,并提供一些解答。
首先,通过官网下载CocosCreator开发工具并构建编译,发现有脚本加密选项。构建后的样本APK中,通过Jadx-gui进行java层源码分析,了解到assets目录下二进制源代码的加载情况。在入口Cocos2dxActivity处,有一个onLoadNativeLibraries函数加载libcocos2djs.so文件。在AndroidManifest.xml中找到其定义为cocos2djs。
初步分析显示,脚本加密操作可能发生在非java层,因此将研究对象转移至libcocos2djs.so文件。通过阅读Cocos2dx源码,发现其使用xxtea加密和解密。CocosCreator构建项目过程则相反,运行时进行解密操作。
为了获取Key值,我们以两个游戏案例进行分析。游戏A中,将libcocos2djs.so文件拖入十六进制编辑器搜索ASCII字符串"Cocos Game",未找到相关信息。使用IDA分析libcocos2djs.so文件,发现函数名简洁,未进行安全处理。搜索xxtea / key函数,找到相关函数。尝试直接在so层获取Key值,发现jsb_set_xxtea_key函数可能设置Key。通过回溯,找到了游戏A中的Key值(v26),使用该值成功解密jsc文件。
游戏B的分析类似,同样在jsb_set_xxtea_key函数中找到Key值(v10),并通过附近的字符串找到可疑的Key值和Cocos Game。尝试使用此Key值解密,同样获得成功。对比游戏A中的密匙,发现都位于applicationDidFinishLaunching函数内,可能为新的找Key值的关键。
通过阅读相关源码,了解Cocos2d-x应用入口中加载完成时回调的方法。结合CocosCreator构建项目过程,理解游戏应用环境加载完毕后,Key值传入解密函数中,解密文件化为js文件,并在内存中拷贝,游戏调用js文件进入游戏界面。
在其他关键函数分析中,可以进一步探索解密过程。例如,在xxtea_decrypt函数中观察memcpy和memset操作,以及do_xxtea_decrypt函数的大量计算。结合CocosCreator源代码,可以确定传入参数中的Key值。使用Frida框架在游戏运行时Hook xxtea_decrypt函数,通过简单的js脚本直接获取Key值,操作相对简单。
关于解密工具,获取Key值后,直接参照CocosCreator源代码实现解密逻辑即可。此外,网上也存在一些封装好的加解密程序,如jsc解密v1.44,可满足当前Cocos2dx版本的文件加解密需求,操作较为简单。
总结,通过初步分析和实例探索,已经提供了一些解密Cocos2dx-js游戏jsc文件的关键步骤和方法。欢迎交流和分享更多见解。