首页 > 其他分享 >ACV1引擎寻找Script封包密钥

ACV1引擎寻找Script封包密钥

时间:2022-11-17 00:33:43浏览次数:69  
标签:封包 Script dat crc64 引擎 密钥 ACV1

ACV1引擎寻找Script封包密钥

0x01 识别引擎

引擎封包的文件头会写一个 ACV1

封包名一般为arc0.dat arc1.dat arc1.dat script.dat

0x02 为什么要寻找封包密钥

vn_re这个开源项目可以看到,这个引擎的script.dat文件是需要一个密钥的

也就是说需要这个密钥才能解开这个封包。

同时这个项目也提到密钥为游戏名的crc64的前四个字节。

0x03 寻找密钥

既然已经知道密钥是通过crc64函数算出来的,我们只需要找到这个函数即可

对于老版本的ACV1引擎,crc64函数是直接导出的

从这里可以看到crc64_hash这个函数,对这个函数头下断点

等到游戏传进来一个游戏名的参数,既可以得到解包的密钥

对于新版本的,这个函数进行了inline

虽然也同样导出了crc64,但是你断下发现并不会传入游戏名

这时可以搜索字符串 script.dat 可以找到唯一的结果

转到该字符串的使用处

可以看到明显进行了inline

其实老版本也可以用这个方法,只不过搜索script.dat有两处,其中一处和图中类似。

标签:封包,Script,dat,crc64,引擎,密钥,ACV1
From: https://www.cnblogs.com/Dir-A/p/16898087.html

相关文章

  • ACV1引擎脚本处理(C++)
    推荐在Github进行阅读:ACV1引擎脚本处理(C++)ACV1引擎脚本处理(C++)0x00知识背景开始处理脚本之前希望大家熟悉或至少用过以下知识内容。1、C基础语法2、C++面向对象基......
  • Javascript(笔记40) - ES6特性 - Map
    Javascript(笔记40)-ES6特性-MapMap ES6 提供了Map数据结构。它类似于对象,也是键值对集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也实......
  • #yyds干货盘点#聊聊javascript——call、applay、bind
    Callcall()方法使用一个指定的this值和单独给出的一个或多个参数来调用一个函数。​使用方法:letbar={name:'johnny'}functionfoo(){console.log(this.name......
  • JavaScript中点击按钮弹出新的浏览器窗口
    */*Copyright(c)2016,烟台大学计算机与控制工程学院*Allrightsreserved.*文件名:text.js*作者:常轩*微信公众号:Worldhello*完成日期:2016年10月226日*版本号:V......
  • Javascript(笔记39) - ES6特性 - 集合Set
    SETES6 提供了新的数据结构set(集合)。集合类似于数组,但成员的值都是唯一的,集合实现iterator 接口,所以可以使用“扩展运算符”和“for...of”进行遍历,集合的属性和方法......
  • [JavaScript]自定义排序方式Array.sort
    自定义排序方式,通过array.sort//按助力值、绑定时间排序。return<0:a在前,return>0:a在后,return==0:不变list.sort(function(a,b){varref=0if(a.bi......
  • 用JavaScript 实现断点续传 (HTTP)
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • JavaScript语法变量以及变量typeof
    JavaScript-语法-变量变量:一小块存储数据的内存空间(一片存储数据的内存区域)Java语言是强类型语言,而JavaScript是弱类型语言强类型:规定类型(在开辟变量存储空间时,定义了......
  • [Typescript]106. Medium - OnPropChnagedMethods
    typeOnPropChnagedMethods<T>={[KeyinkeyofT&stringas`${Key}Changed`]:(cb:(newValue:T[Key])=>void)=>void}declarefunctionmakeWatchedObject<......
  • Javascript简单实现深拷贝
    利用递归方式遍历所有属性进行深层对象拷贝:functioncloneDeep(object){if(typeof(object)=='object'){if(Array.isArray(object)){......