源码来自9miao

本人技术有限,大家共同学习,抛砖引玉,加群讨论

交流群: 422209275

2.140.0版本的全民挂机

概述:

基本目录结构:

Code_Client  (客户端 具体游戏相关c++代码,还有一部分lua在Resource_client)

Code_Core    (引擎代码,以及增加的一些基础库)

Code_Server   (Server, java写的)

Resource_Art   (原始资源 ccb工程)

Resource_Client  (工程所需对应资源)

目录很清晰,不多说明,不过客户端要运行,还需改改目录,把一些2.140.0的目录去掉,后面详述

一:Code_Core,

对应cocos版本2.2.3;具体看cocos2d.cpp文件;引擎已经被他们改了很多,慢慢解说(我也没完全看明白,改了多少),明显多了几个目录,core,jni,json*,protobuf*,

Utility,*.bat, 下面说说他们的作用;

Core:一些核心的基础组件

Json:json库

Protobuf:通讯用protobuf库

Utility:aes加密用(应该是加密资源的)

Jin:android编译用到,为何单独写一个?Cocos自带的不用?待确认

1)Core

AES.h  cpp  -->  AES加密算法

接口:

//key must be 128 bit(16byte), outStr should be alloc and deleted outside the function

void Decrypt (const byte* inStr, unsigned int count, byte* outStr, const byte* key);

//key must be 128 bit(16byte), outStr should be alloc and deleted outside the function

void Encrypt (const byte* inStr, unsigned int count, byte* outStr, const byte* key);

Base64.h  cpp ---->  Base加密

std::string core_base64Encode(const unsigned char* inData, int inSize);

为何只有个encode,没有decode,这也太省了吧;

AsyncSprite.h  cpp -->  异步sprite

这个屌屌的;改造了很多引擎相关部分

这种异步,瓶颈也是在io读写,那么程序初始化加载资源,用这个也没什么作用;

在其他场景使用

Concurrency.h  cpp --> 线程相关

这个也屌屌的;自己写我也写不出来。

GameEncryptKey.h cpp --> 这是真正游戏使用的加密相关

const unsigned char gamekey[]="nc315XHW^";  //!!!哈哈,加密key,估计现在版本肯定改了

bool encBuffer(unsigned long inSize , unsigned char* inBuffer, unsigned long& outSize, unsigned char*& outBuffer);

bool decBuffer(unsigned long inSize , unsigned char* inBuffer, unsigned long& outSize, unsigned char*& outBuffer);

unsigned char* rc4DocumentBuffer(unsigned long inSize,unsigned char* inBuffer,unsigned long* outSize);

unsigned char* rc4TextureBuffer(unsigned long inSize,unsigned char* inBuffer,unsigned long* outSize);

unsigned char* getEncodeBuffer( unsigned long* inSize,unsigned char* buffer,const char * fileName,const char* pszMode);

通讯传输加密(rc几算法,然后zlib压缩),资源文件使用rc4加密

GameMath.h cpp --> 一些字符串处理,时间处理等函数

GamePlatform.h cpp ---> 平台相关一些函数,不错,就是少了点

Inifile.h cpp ---> 读取ini类型配置文件,

可惜里面的实现耦合太多了。不方便直接拆出来用

IteratorWrapper.h  --> 这个太屌。

Language.h cpp  ---> 本地化文字显示,json配置文字

Md5.h cpp --> md5算法

Rc4.h cpp -- > rc4 算法

Singleton.h ---> 单例基类

Stdafx.h cpp -->宏定义一个内存检测相关

StringConverter.h cpp ---> 各种类型转换成string类型

C++就是这点不好,什么库,都要自己准备!建议都加到标准库

TableReader.h cpp --->xml以及一个自定义结构的解析

Tinyxml2.h cpp ---> xml解析

网络相关

SocketBase.h cpp --> 网络基础

IoSocket.h cpp --> 基本的封装

AsyncSocket.h cpp ---> 这网络封的很烂啊

CurlDownload.h cpp --> 直接用cocos自带的吧

LoadingUnit.h cpp --> 把所有加载的写到一起,自行控制,同步or异步加载;真蛋疼!

ServerConsts.h cpp --- >公告,服务器列表,热更新等处理

太古老了!用cocos的就好了,这种基本都在lua里实现了。写这么一坨c++

HaswkOctets.h cpp ---> 字节流操作

PackageBase.h cpp ---> 通讯数据包

void* PacketBase::PackPacket(int _opcode, int &_length,const std::string& str)

1. 随机一个mask,亦或所有的字节;

2. 然后生成干扰项reserve,和mask合成一个int值

reserve前24位为扰乱相关,没有实际用处,后8位为有效的字段 by zhenhui

3. 4字节opcode;4字节字符串长度;4字节reserve;4字节crc校验;要发送的字符串

4. 压缩上面生成的字节流

PackageManager.h cpp --->

ThreadSocket.h cpp --->

1)libOS

inputBox.h cpp --->win部分使用,不用cocos自带的。。

libOS.h cpp -->总的声明,具体实现对应不同android和ios部分

BulletinBoardPage.h cpp ---> win,android都是空的,ios下才有

Flurry.h -->IOS使用分析功能头文件

MTA.h ---> ios使用统计分析头文件 TA-SDK,这个没听说过

MTAConfig.h

SvUDIDTools.h

UIDevice+IdentifierAddition.h

WXApi.h -->微信sdk

WXApiObject.h --> 以上都是ios相关

目录ios

YAKeychainWrapper.h m  --->  ios 钥匙串,太刁;这个都用到来干嘛?

UIDevice+IdentifierAddition.h m ---> 这个倒是可以用到,获取ios设备id,mac地址

NSString+MD5Addition.h m --> ios md5加密

SvUDIDTools.h m ---> 这里会判断 钥匙串 证书

#ifdef LIBOS

//for 这个是的证书 plglove@qq.com

static const char kKeyChainUDIDAccessGroup[] = "Q498LWL48Q.com.loves.keychainshare";//VV359RS3H9

#endif

//for 这个是庞贵的证书 pglove@qq.com

#ifdef LIBOS_APPSTORE_TW

static const char kKeyChainUDIDAccessGroup[] = "4XV5KE33Q2.com.loves.keychainshare";

#endif

//for 这个是黄硕dukaka的证书 dukaka@vip.qq.com

#ifdef LIBOS_APPSTORE

static const char kKeyChainUDIDAccessGroup[] = "9FAK9YZ36N.com.loves.keychainshare";

#endif

#ifdef LIBOS_APPSTORE_TW_Panggui

//for panggui@com4loves.com

static const char kKeyChainUDIDAccessGroup[] = "4Y73N55H57.com.loves.keychainshare";

#endif

#ifdef LIBOS_APPSTORE_TW_68240412

//for  68240412@qq.com

static const char kKeyChainUDIDAccessGroup[] = "CFJ39ZNX5H.com.loves.keychainshare";

#endif

testAlertView.h mm ---> ios弹出窗

MovieMgr.h mm ---> play moview,调用的AppController里的方法

MBProgressHUD.h m ---> 进度条?

BulletinBoardView.h m

BulletinBoardView.mm --> 使用webview实现公告版

libOSObj.h m

libOS.mm ---> 这里面某些实现可以用用

目录Android

libOSHelpJni.h cpp -->对应一些android的功能实现。调用GameActivity和AnalyticsToolHelp,java文件

libOS.cpp --> 这里是个interface,调用的是Java_org_cocos2dx_lib_Cocos2dxHelper_H, 在

cocos2dx\platform\android\jni目录下,也是被增加了很多api,为何要改引擎呢!单独写一个文件不好?

Android.mk 打包android libos静态库配置文件

3) Utility 工具,我一般写工具都用脚本写。不用c草草

"Usage:Utility [-OPERATION]\n" \

"-E:(Encrypt): Utility -E sourcefile destinationfile key\n" \

"-D:(Decrypt): Utility -D sourcefile destinationfile key\n" \

"-C:(CRC validate): Utility -C checkfile\n" \

"-N:(Network test): Utility -N opcode" \

"-V:(Verson file creation): Utility -V rootdir versonfile excludeFileExtension compareDir version"; \

"-P:(Pressure test): Utility -P type(0:Login 1:PlayerSimulate 2:MassivePlayers";

主要功能上述6项,不多说

不知道最新的全民挂机是否还是用这里的方法加密的;要是的话,可以直接拿来解密试试!哈哈。可惜没有proto文件,看不到制定的协议,也没法修改。

全民挂机 解密工具, 可到qq群下载

只用于开发爱好,不要用于非法目的,本人概不负责

《全民挂机》 源码解析 一相关推荐

  1. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

  2. 谷歌BERT预训练源码解析(三):训练过程

    目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...

  3. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  4. Gin源码解析和例子——中间件(middleware)

    在<Gin源码解析和例子--路由>一文中,我们已经初识中间件.本文将继续探讨这个技术.(转载请指明出于breaksoftware的csdn博客) Gin的中间件,本质是一个匿名回调函数.这 ...

  5. Colly源码解析——结合例子分析底层实现

    通过<Colly源码解析--框架>分析,我们可以知道Colly执行的主要流程.本文将结合http://go-colly.org上的例子分析一些高级设置的底层实现.(转载请指明出于break ...

  6. libev源码解析——定时器监视器和组织形式

    我们先看下定时器监视器的数据结构.(转载请指明出于breaksoftware的csdn博客) /* invoked after a specific time, repeatable (based o ...

  7. libev源码解析——定时器原理

    本文将回答<libev源码解析--I/O模型>中抛出的两个问题.(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们 ...

  8. libev源码解析——I/O模型

    在<libev源码解析--总览>一文中,我们介绍过,libev是一个基于事件的循环库.本文将介绍其和事件及循环之间的关系.(转载请指明出于breaksoftware的csdn博客) 目前i ...

  9. libev源码解析——调度策略

    在<libev源码解析--监视器(watcher)结构和组织形式>中介绍过,监视器分为[2,-2]区间5个等级的优先级.等级为2的监视器最高优,然后依次递减.不区分监视器类型和关联的文件描 ...

  10. libev源码解析——监视器(watcher)结构和组织形式

    在<libev源码解析--总览>中,我们介绍了libev的一些重要变量在不同编译参数下的定义位置.由于这些变量在多线程下没有同步问题,所以我们将问题简化,所提到的变量都是线程内部独有的,不 ...

最新文章

  1. 计算机图形学 区域填充,计算机图形学 区域填充算法的实现
  2. UIPickerView 修改必须滚动才修改值的bug
  3. InfluxDB:cannot use field in group by clause
  4. 没有安装提供程序“System.Data.SqlServerCe.3.5”的解决方法
  5. Qt Creator图片
  6. 摊牌了,我 HTTP 功底贼好!
  7. linux ntfs 新建,Linux在NTFS中创建的文件的权限
  8. Dubbo-go 服务代理模型
  9. Linux centosVMware df命令、du命令、磁盘分区
  10. 数字和为sum的方法数
  11. oracle 表空间 归档,oracle数据库表空间及归档
  12. MD5加密以及产生唯一的ID
  13. 电源大师课笔记 2.7
  14. 如何把UCF101数据集分成训练集和测试集
  15. 计算机考试的话语,鼓励别人考试的句子
  16. 备战BAT面试-死磕mysql|mysql 是如何做到存储两千万数据毫无压力的?
  17. 用Java输出正方形,长方形
  18. opencore添加Linux引导,黑苹果OpenCore引导详细教程
  19. Excel如何将汉字转成拼音
  20. 几个IDS开源系统介绍

热门文章

  1. 开放式WEP和共享式WEP的区别
  2. 神奇的不可见空格200b导致代码异常
  3. 性格测试c语言程序,性格测试题目及答案
  4. 【转】[安卓]解决因为冻结了系统程序导致不能开机的问题
  5. css固定定位在某个元素的右边
  6. leo-手机开单库存管理系统
  7. h5+css+js简单验证码
  8. EndNote使用总结+Mendeley
  9. 从用途上区分自攻螺钉与钻尾螺钉
  10. 春节抢票神器!GitHub 2 万 Star!