首页 > 其他分享 >[PJADV] 封包结构分析

[PJADV] 封包结构分析

时间:2024-01-28 21:57:34浏览次数:25  
标签:分析 文件 封包 PJADV 偏移 PAJ 结构 Pack

[PJADV] 封包结构分析

目标游戏:ティンクル☆くるせいだーすPSS v.1.19

这篇就详细写一下,后面就全当读者有相关背景知识,因为这样写实在很累(

假设结构

先正常安装游戏,并打上更新补丁(如果太乱可以先不打更新补丁,视情况而定)(是不是可以观察一下打补丁前后变化?补丁本身?)

先浏览一遍游戏的目录,尽可以收集信息,方便之后仔细分析。

可用看到游戏目录下有两个ini文件,一个记录了各个封包名的字段,一个记录了存档目录(注意这个ini文件的编码为sjis(从图中可见它在GBK下乱码了))

  • archive.ini推测应该是和封包加载有关,或者只是个记录文件,可以尝试修改这个ini看看效果

  • install.ini文件内只有个存档路径来看,有可能只是个存档路径设置文件

游戏封包为.dat后缀,用winhex查看并对比一下不同的封包(使用winhex查看后发现instdata.pak其实也是一样结构的封包)

对比封包的时候尽量选中体积小的,这样可以比较容易看出封包的结构,有些时候根本不用调试分析游戏,就可以直接看出结构

先来对比一个封包结构,依据经验,封包开头一般都有一段标识数据,用来识别该结构的封包文件

多查看几个封包后,可以发现,每个封包的头12个字节都是 GAMEDAT PAC2 ,这个一般叫标识头,或者signature,反正就是拿来方便程序判断这个文件确实是它需要的文件。

然后对比紧接着的4个字节

这里是因为依据一般的封包结构,一个封包一般会有 标识头,文件索引表,文件数量等字段,索引表一般里面还包括文件名,文件数据的偏移,文件数据的大小之类的信息,而文件偏移,大小,数量,这些字段一般都是4个字节,但也不一定,所以实际上是不是这样,也不一定,比如文件数量可以通过索引表算出来,偏移和大小也不一定要同时有,文件名也不一定需要,所以对于这种猜测,应该大胆假设,小心求证,从这也说明,应该多了解几个游戏的封包文件结构,总结把握大概的雏形和规律。

可以发现,extenPSS101.dat的标识头后4个字节,是0xA,而instdata.pak是0x9,那么他们分别代表什么呢?我们可以大胆的猜,比如可能是索引表的大小?索引表的偏移?或者只是单纯的版本、优先级标记?又或者是文件数量?或者说现在还猜不出来,那么我们就先看下面的数据

下面的数据就简单了

不难发现,这个是文件名,而且每个文件名的长度最大就32个字节,由于这个封包里的文件很少(这也就是为什么选择体积小的封包分析的原因,如果体积太大,有些结构或成员可能一下子看不出来),那么我们算一下文件名的个数,恰好是10个,那么是不是证明这4个字节是文件数量?

为了求证这点,我们可以多打开几个封包算一下文件名个数,反复对比后会发现,这个4个字段确实是和文件数量对应的。

那么现在我们对封包结构的猜测可以写成这样

struct PAJ_Pack_FileName
{
    char aFileName[32];
};

struct PAJ_Pack
{
    char aSignature[12];
    uint32_t uiFileCount;
    PAJ_Pack_FileName aNameList[uiFileCount];
    // data..
};

好了,现在,我们应该只差文件的大小和文件数据偏移了(依据最少信息可解出封包文件的原则(这原则是我瞎说的

标签:分析,文件,封包,PJADV,偏移,PAJ,结构,Pack
From: https://www.cnblogs.com/Dir-A/p/17993483

相关文章

  • Spring整合jasypt原理分析
    前言在我们系统中,有很多敏感数据,如MySQL及Redis的账号密码信息等,jasypt可以帮我们加密这些信息,使系统更加的安全。使用添加maven依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2......
  • Python Seaborn 基本数据排名分析
    ​ Python中使用Seaborn进行基本的数据排名分析通常涉及到可视化数据的分布和排名。Seaborn是一个基于Matplotlib的数据可视化库,提供了丰富的图表类型,使得数据分析更加直观。可以对数据进行初步的排名分析,了解数据的基本分布情况,从而为更深入的数据分析打下基础。1、条......
  • IBM java的分析工具(ga和ha)学习和整理
    IBMjava的分析工具(ga和ha)学习和整理背景前几天学习了整理了jca工具今天继续学习一下ga工具ga工具主要是分析gclog相关.可以很直观的进行gclog的分析和展示.除了mat之外还有一个比较轻量级的内存dump分析工具ha.想着一起学习和分析一下.ga工具的相关学习下载:https......
  • 记一次 .NET某工控自动化系统 崩溃分析
    一:背景1.讲故事前些天微信上有位朋友找到我,说他的程序偶发崩溃,分析了个把星期也没找到问题,耗费了不少人力物力,让我能不能帮他看一下,给我申请了经费,哈哈,遇到这样的朋友就是爽快,刚好周二晚上给调试训练营的朋友分享GC标记阶段相关知识,而这个dump所展示的问题是对这块知识的一个很......
  • 通达信【寻妖记】幅图选股公式 大概率捉妖 简洁浓缩 分析股票的强度指标 源码文件分享
    通达信【寻妖记】幅图选股公式简洁浓缩分析股票的强度指标源码文件分享原公式完全加密,时间限时,股海网解密源码文件分享,已经解除时间限制,可以永久使用,并新增选股公式一个本指标叠加了资金流动、筹码流动、股票情绪三个元素,是一个综合性的评价指标,可用于选股、操盘。这个指标......
  • 三级计算机网络大题60分——来自B站“吃饭不留名”(综合题4:sniffer抓包分析 10分)
    https://www.bilibili.com/video/BV1hE411x7RT?p=6&vd_source=2bddda168481f778f8f92561c7e55574方法技巧考点1考点2考点3考点4考点5考点6考点7考点8考点9考点9考点10考点11考点12考点13考点14考点15......
  • 【scikit-learn基础】--『回归模型评估』之准确率分析
    分类模型的评估和回归模型的评估侧重点不一样,回归模型一般针对连续型的数据,而分类模型一般针对的是离散的数据。所以,评估分类模型时,评估指标与回归模型也很不一样,比如,分类模型的评估指标通常包括准确率、精确率、召回率和F1分数等等。而回归模型的评估指标通常包括均方误差(MSE)、......
  • 通达信分析持股区间主图指标公式源码副图
    出水牛股:=92212129;买线:=Ema(CLOSE,2);卖线:=EMA(SLOPE(CLOSE,21)*20+CLOSE,42);突破:=REF(EMA(CLOSE,9),1);A1X:=(EMA(CLOSE,9)-突破)/突破*100;多:=IF(A1X>=0AND买线>=卖线,REF(EMA(CLOSE,10),BArslAst(crOSS(A1X,0))+1),DRAWNULL);空:=IF(A1X<0AND买线<卖线,REF(EM......
  • 三级计算机网络大题60分——来自B站“吃饭不留名”(综合题3:DHCP报文分析 10分)
    https://www.bilibili.com/video/BV1hE411x7RT?p=5&vd_source=2bddda168481f778f8f92561c7e55574考点1考点2(和考点3一起考察)考点3考点4知识总结真题演练1(考点1)真题演练2(考点2和考点3)真题演练3(考点2和考点3)真题演练4(考点4)......
  • PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附
    全文下载链接:http://tecdat.cn/?p=22617最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果。它应用了Hamilton(1989)的滤波器和Kim(1994)的平滑器  %matplot......