Bootstrap

2024年Android最全cocos2d-js 手游解密jsc和WebSocket数据aes加密解密分析②,Android studio界面

要如何成为Android架构师?

搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;

对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,希望能帮你突破瓶颈,跳槽进大厂;

最后我必须强调几点:

1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


e.prototype.send = function(e, t, o) {

if (!cc.game.isPaused() && this.state != n.broken) {

var r = new s.default.Head();

r.wMainCmdID = e;

r.wSubCmdID = t;

var i = {

head: r,

content: o

}, c = new a.NetDataWithBY();

if (!this.aesKeyBuffer) {

this.aesKeyBuffer = u.CryptoTool.randomAesKeyBuffer();

this.aesIvBuffer = u.CryptoTool.randomAesIvBuffer();

}

c.setAes(this.aesKeyBuffer, this.aesIvBuffer);//setAes 的调用

c.initWithData(i);

c.getState() == s.default.ENetDataState.normal ? c.isPingMsg() ? this.unshiftSendArray(c) : c.isKernelDetectSocketMsg() ? this.unshiftSendArray(c) : n.reconnecting == this.state ? this.backupArraySend.push(c) : this.sendArray.push(c) : cc.error(h, this.cachekey, "send", "send fail, the NetData state is not normal");

}

};

我们要找的aesKey 和 aesIV, 是由 aesKeyBuffer和 aesIvBuffer 赋值。

分析可以得知,aesKey和aesIV都是每次启动随机生成的。


if (!this.aesKeyBuffer) {  //这里判断密钥是否创建

    //创建随机密钥 和 向量

    this.aesKeyBuffer = u.CryptoTool.randomAesKeyBuffer();

    this.aesIvBuffer = u.CryptoTool.randomAesIvBuffer();

}





//取Key

e.randomAesKeyBuffer = function() {

    return n(16);

};

//取Iv

e.randomAesIvBuffer = function() {

    return n(16);

};



//生成随机

function n(e) {

    for (var t = [], o = 0; o < e; o++){ 

        t.push(Math.floor(255 * Math.random() + 1));

    }

    return new Uint8Array(t);

}

那么我们就测试一下,把重要数据写到本地验证一下。


//js 写文件到本地方法

var writablePath = jsb.fileUtils.getWritablePath();

writablePath += "xdd/";

var fileName = "bufferToData" + "_file.js";

var fullPath = writablePath + fileName;

jsb.fileUtils.createDirectory(writablePath);

jsb.fileUtils.writeStringToFile(JSON.stringify("我的内容"), fullPath);

修改js代码保存->加密->放回缓存位置,打开游戏(具体方法请看上集)

打开手机xdd目录,得到想要的数据,

数据有些看不懂,解析一下在看看【字节集】还原到【十六进制】

还原过程

得到 纯字节集{8,0,41,0,42,0,1,0,14,0,2,154,1,92,44,65,229,89,133,72,51,37,57,59,138,208,216,174,148,209,13,209,53,218,63,108,35,100,39,4,124,111}

字节集_字节集到十六进制 (zj)

得到 十六进制080029002A0001000E00029A015C2C41E55985483325393B8AD0D8AE94D10DD135DA3F6C236427047C6F

开始验证解密(密钥也写到了本地,重复上面转换成16进制)

aesKey = 127F763C0FEC0D5EEA997C66BA44B2CC

aesIV  =   9A1AB62788FC8F89B320425595292AEB

经过测试,前20位是包头,需要删除掉再解密

080029002A0001000E00029A015C2C41E55985483325393B8AD0D8AE94D10DD135DA3F6C236427047C6F

删掉前20位后

029A015C2C41E55985483325393B8AD0D8AE94D10DD135DA3F6C236427047C6F

解密结果,这里前面显示乱码,是因为 Google protobuff 格式原因

我们把解密内容设置为十六进制显示

-------->返回类型:文本型

–>系统计算耗时:2 ms

–>系统计算结果:0801121be5beaee4bfa1e68e88e69d83e9aa8ce8af81e5a4b1e8b4a5efbc81


放入protobuff 解析工具,解析一下,原来如此。


返回信息是解密完成。

但是发送数据没有解密成功,有时间可以一起研究研究

多次分析,发现也是也是去掉前20位,

0800B701BA0101000700B1A9DAE51C77BF7C53FE29DA01193AC0972E6AB5BBDCA5DD9A05F606AB236DC2EC384837A0AC8D816B41141D78778C07296A652155FEE87BA1340E9A849561B4F4D6298E86EA96B25E6E445F704606910629C9DD0795869D87B785F914336C896A276981A85F5FC9D93D9064868D7F9D723DA50890B150F4B25838D7BCA7D8972F7C6D50BF64C5C6204076A41ED4618BC8014D6AB4E52B04B3560B6355F3B9776309368F04FA3E6AD3059C93245A87BBFA47A277F62641FFD8E7997085D15F1802590076F326688A3421435F41547BD2D127813F7FC29219B213B4178E59E26DA0A4AD2471830F9B26A55D94D565659AAB3A6060BA46CAB69FFCDF373CF3C32C24AD04442E589C8C48555866127AD6C61939AD119A40BF995E86B1607123FAD7E8521A5F4B16ABE71242EC635A2436404DD1BE74EDA5C3583A5D321A37298DCD64C00F2D81813303C7383D8B195BA0F5EB9A34409E90D4F3CCF5D520FD0CE26FA8780C4FB33E6748A9FEA638E10F4C17AF39F1AD2C229D010FDAD21FDF1F76E2BC1634D4CF255B62619667E8601E63EB45F25CA44721C47FB80024107C358F3D63678B9A52D731293849F3A09F75A1EA

B1A9DAE51C77BF7C53FE29DA01193AC0972E6AB5BBDCA5DD9A05F606AB236DC2EC384837A0AC8D816B41141D78778C07296A652155FEE87BA1340E9A849561B4F4D6298E86EA96B25E6E445F704606910629C9DD0795869D87B785F914336C896A276981A85F5FC9D93D9064868D7F9D723DA50890B150F4B25838D7BCA7D8972F7C6D50BF64C5C6204076A41ED4618BC8014D6AB4E52B04B3560B6355F3B9776309368F04FA3E6AD3059C93245A87BBFA47A277F62641FFD8E7997085D15F1802590076F326688A3421435F41547BD2D127813F7FC29219B213B4178E59E26DA0A4AD2471830F9B26A55D94D565659AAB3A6060BA46CAB69FFCDF373CF3C32C24AD04442E589C8C48555866127AD6C61939AD119A40BF995E86B1607123FAD7E8521A5F4B16ABE71242EC635A2436404DD1BE74EDA5C3583A5D321A37298DCD64C00F2D81813303C7383D8B195BA0F5EB9A34409E90D4F3CCF5D520FD0CE26FA8780C4FB33E6748A9FEA638E10F4C17AF39F1AD2C229D010FDAD21FDF1F76E2BC1634D4CF255B62619667E8601E63EB45F25CA44721C47FB80024107C358F3D63678B9A52D731293849F3A09F75A1EA

最后

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。

还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

Android 基础知识点

Java 基础知识点

Android 源码相关分析

常见的一些原理性问题

希望大家在今年一切顺利,进到自己想进的公司,共勉!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

常见的一些原理性问题

[外链图片转存中…(img-VTpedEIi-1715621324143)]

希望大家在今年一切顺利,进到自己想进的公司,共勉!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

;