cocos2dx小游戏数据签名算法破解
点击上方↑↑↑蓝字[协议分析与还原]关注我们
“ 快速破解小游戏常见的数据签名算法。”
最近在分析各种小游戏的协议,本文以《我不是无双》这款小游戏为样例介绍这类小游戏的分析方法。
01
—
抓包
在分析开始,首先明确分析的目的是学习这款游戏的网络协议算法,当然,对协议的分析得从抓包开始,很容易,我们抓到了协议流量报文,像下面这样:
POST https://light-wbsws.ohayoo.cn/102 HTTP/1.1
Accept-Encoding: identity
Content-Type: application/json;charset=UTF-8
User-Agent: 协议分析与还原
Host: light-wbsws.ohayoo.cn
Connection: Keep-Alive
Content-Length: 182{"platform":"jrtt","openId":"ProtoSec","time":1614995503,"version":3,"sig1":"555555555555555?0CQEGKL@5UEA?O1O2VVXWSNBH1BK34UWUJTO./","sig":"aaaaaaaaaabd920d9c329251d4bc4a81"}
简单分析就发现,这里面有两个值sig1和sig,是用来对数据校验的特征,那我们的目标就更明确了,是分析这两个值的生成算法。
02
—
解包
要分析校验值的生成算法,当然要解包了,解开apk,很容易知道这款游戏是使用cocos2d进行开发的,打开assets目录,能够看到jsc文件:
打开jsc看一眼,不是spidermonkey编译的那类,当然,lib目录下面还有libcocos2djs.so,毫无疑问,游戏的实现逻辑在jsc内,将jsc解密,得到原始的js即可找到签名算法的实现了。
03
—
hook分析
这类加密的jsc文件,在应用打开时会被解密成js,这个过程在libcocos2djs.so内完成,所以分析这个文件就可以找到算法了。
一般来说,大部分游戏内的jsc文件的加密方式都是xxtea,很多密钥也是在so中写死的,所以,很多时候,可以直接用工具从so中将内置字符串导出,然后找到固定位置来取密钥字符串。
这里稍微复杂点,介绍更通用的方法,就是hook了,首先,我们使用IDA打开so,很容易就找到了xxtea的解密函数位置:
打开xxtea_decrypt函数:
记下地址,顺便看下函数的伪码方便确定我们要查看的函数参数:
我们使用Frida来hook,根据函数地址及参数,写好后运行,很容易就得到了结果:
这arg2的六个字节就是xxtea密钥,使用jsc解密工具解开,就拿到了原始的js文件了:
一般这种小游戏,逻辑基本在index.js内,根据需要具体分析即可,你看,逻辑很完整:
04
—
算法
拿到了原始的js文件,那接下来的分析基本就没难度了,当然,有的时候也有,毕竟,代码看不懂是常事。
通过阅读代码,很容易就得到无双的两个签名的算法。
sig1是一个字符串编码(deviceid,time) ,加time得到的值。
而sig是一个包含platform、openId、version、data、clientVersion、sig1等项的md5值,并且包含salt值(获取ProtoSec),这现在基本是常规操作啦。
大家有兴趣就自己分析下,这里不详细写了。
05
—
结束
这类jsc加密的游戏的分析就写到这里了,这是这类游戏比较通用的分析方法,难度不是很大,有些难度大些的碰到再说了。
大家如果要解密和分析这类游戏,到这里来,肯定没错,大家多交流。
别忘点“在看”、“赞”和“分享”
新的规则,及时收推文要先给公号星标
别忘了星标一下,不然就错过了
长按进行关注,时刻进行交流。
cocos2dx小游戏数据签名算法破解相关推荐
- 使用java完成一个猜数字的小游戏(数据范围在1-100之间)
最近开始学java,使用java做一个猜数字的小游戏,代码不多,我就直接贴代码了 /** A:案例演示* 需求:猜数字小游戏(数据在1-100之间)*/import java.util.Scanner ...
- 怎么把4399小游戏的代码_25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 还记得童年的网页小游戏吗?今天带大家爬取4399小游戏网站的数据,游戏名字+链接地址 目标网 ...
- 25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 还记得童年的网页小游戏吗?今天带大家爬取4399小游戏网站的数据,游戏名字+链接地址 目标网 ...
- python爬取4399小游戏数据_25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 还记得童年的网页小游戏吗?今天带大家爬取4399小游戏网站的数据,游戏名字+链接地址 目标网 ...
- Python 【爬虫3】_微信小程序_小游戏数据助手数据爬取
一.背景介绍 近期产生需求,需要批量重复获取微信小程序数据助手的部分数据,减少重复工作,提高效率. 二.环境准备 主要逻辑:charles抓包,分析,爬取,数据存储 环境配置:pc-win10/移动- ...
- 微信小程序,小游戏数据助手数据爬取!还敢随便授权小游戏吗?
一.背景介绍 近期产生需求,需要批量重复获取微信小程序数据助手的部分数据,减少重复工作,提高效率. 二.环境准备 主要逻辑:charles抓包,分析,爬取,数据存储 环境配置:pc-win10/移动- ...
- cocos2d-x小游戏——飞机大战
上周,我做了一个基于 cocos2d-x 的飞机大战的游戏,因为我刚学cocos2d-x没多久,所以这个飞机大战很多都是看着别人的教程,再加上自己的一些想法,来做的. 下面我想说一说我的思路. 飞机大 ...
- cocos2d-x 学习笔记(4)cocos2d-x 小游戏类似打地鼠(含源码)
源码下载 http://download.csdn.net/detail/u011261250/5719559 这是我自学一星期写的,cocos2d-x版本是2.1.4,是一个简单的类似打地鼠的游戏, ...
- cocos2dx小游戏源码(消灭星星)
才开始了解cocos2dx,为了练手,开发了一下消灭星星这款游戏,游戏资源在网上下载的,游戏也是参考自android平台消灭星星这款游戏.现提供游戏源码,已在android平台测试过,有兴趣的同学可以 ...
最新文章
- icmp回复报文_CCNA - Part7:网络层 - ICMP 应该是你最熟悉的协议了
- java 线程---成员变量与局部变量
- sql 发送邮件网络附件_利用VBA发送附件电子邮件
- 设计模式之外观模式(Fasade Pattern)
- 网络服务器预防dos***的层次
- ELK7.8.1的Docker搭建过程
- 利用Kubernetes名称空间来管理内存和CPU资源(三)
- 【Clickhouse】Clickhouse Cannot create table with column ‘Int256‘ because experimental bigint types
- ES6新特性_const声明常量以及特点---JavaScript_ECMAScript_ES6-ES11新特性工作笔记005
- Qt引用Boost问题
- C语言和三菱plc通讯,三菱PLC的通讯与编程,附实际案例
- redis的hscan命令
- 什么是功能性测试?-Alltesting|泽众云测试
- Pega How To系列之一:如何在页面上动态显示/隐藏内容 ----by Cheney Wang
- 吊炸天核心Java面试问题,一问一答题,一问多答题(建议学习)
- 计算机软件技术有哪些,1.1 什么是计算机软件技术
- Shiro 授权(权限)
- Spring Kafka实战(3)—message listener创建方式探讨
- 一车abs线路怎么量_abs传感器怎么测量好坏
- GeckoDriver 国内镜像源加速下载
热门文章
- 小程序聊天室开发,发送文字,表情,图片,音频,视频,即时通讯,快速部署,可定制开发
- 在Xcode中使用Git进行源码版本控制
- spark—3(Spark Scheduler)
- Java高级特性增强-多线程
- Python3 与 C# 并发编程之~ Net篇
- spring boot 实战 / 可执行war启动参数详解
- JS 中 URL 编码的问题.
- 【腾讯bugly干货分享】微信Android热补丁实践演进之路
- jquery autocomplete实现solr查询字段自动填充并执行查询
- 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...