@TOC

一、通过Fiddler抓包获取到小程序的配置信息文件,其中包含ttpkg.js文件的路径

抓包相信大家肯定已经会了吧,不会的可以参考吾爱看雪论坛的相关文章

【逆向分析】抖音小程序ttpkg.js文件解包记录

二、浏览器打开对应的ttpkg.js文件,并保存到本地

这里怎么保存的不用我多说吧,重点在后面的分析过程

【逆向分析】抖音小程序ttpkg.js文件解包记录

三、通过16进制分析工具进行数据分析

我这里使用的是WinHex,其他的工具都大同小异,自行选择

3.1 ttpkg的文件结构

这里通过搜索引擎查找相关资料,居然只找到一篇相关的,大概结构可参考这篇文章:https://blog.csdn.net/weixin_29002961/article/details/117869108

这里贴出文件的大概结构信息(实际肯定有差距)

【逆向分析】抖音小程序ttpkg.js文件解包记录

3.2 通过WinHex分析数据

打开文件,第一眼就可以看到大量的明文数据,前四个字节是固定标识,后面很多文件路径之类的东西,再往下翻会看到文件内容之类的东西

文件头
【逆向分析】抖音小程序ttpkg.js文件解包记录

部分文件内容 【逆向分析】抖音小程序ttpkg.js文件解包记录

我这里复制了一份导入到可以格式化代码的编辑器里面,通过代码格式化可以看出大概的文件结构
之所以要复制一份是防止破坏源文件的结构(你猜我是怎么知道的[手动狗头])

我这里使用的phpstorm导入的文件,通过代码格式化后可以看到31行有一个json的开始,并且没有乱码之类的,结束的地方在1210行,后面再跟的就是一个js代码的开头了,可以猜测在文件的某个地方存有文件开始位置和结束位置或者文件长度的数据

【逆向分析】抖音小程序ttpkg.js文件解包记录

打开WinHex在文件顶部,查看两个明文之间的间距是多少,这种一般都会有一定的规律,这里看到间距的长度为CC是16进制的,所以在十进制中代表的12,也就是每个明文路径之间有十二个字节的间距,这里经过多次对比后确定长度就是C

【逆向分析】抖音小程序ttpkg.js文件解包记录
【逆向分析】抖音小程序ttpkg.js文件解包记录

3.3 对比每组数据的差异与共同点

选中数据后点鼠标右键选择编辑-复制选块-十六进制数值

【逆向分析】抖音小程序ttpkg.js文件解包记录>【逆向分析】抖音小程序ttpkg.js文件解包记录

然后粘贴到编辑器里面,并把每个端后面的文件名复制到后面,按照两个字符为一组用空格进行分割,下面是我分析出来的数据

蓝色框里代表不同的数据,红色框里代表相同的数据,通过分析可得出第三个框里的数据为文件名称的长度,其余的都是结构体剩余的字节,比如int类型占用四个字节,'app-service.js'的长度为14,所以对应的16进制为E'app.js'的长度为6,在16进制里也就是'6',这里定位了文件名称长度的位置,就是每段空白字符的第9-12个字节,因为使用的是大端存储的,所以是逆序的,大端存储和小端存储可以百度一下。

【逆向分析】抖音小程序ttpkg.js文件解包记录

文件顶部数据比较特殊,通过之前的分析可分析出以下数据:版本号4个空字节占用文件个数第一个文件名称长度,这里我们发现文件头里面并没有我们需要的文件起始位置和结束位置的信息
【逆向分析】抖音小程序ttpkg.js文件解包记录

3.4 定位文件起始位置和结束位置

因为第一个文件为json,所以我们就会想起最开始的那个json头,先找一下偏移位置是多少,再去数据里找相应的16进制数据。这里就定位了文件名称后面第一个4个字节就是我们要找的文件内容开始位置,因为使用的大端存储,所以是逆序的,源数据为:6F 25 00 00,通过逆序后就是00 00 25 6F,跟我们手动找到的文件头偏移地址一致

【逆向分析】抖音小程序ttpkg.js文件解包记录

数据长度也通过同样的方式分析,通过右键把json开始的{设置为选块起始位置,再把结尾的地方选择为选块结束位置,即可
【逆向分析】抖音小程序ttpkg.js文件解包记录

【逆向分析】抖音小程序ttpkg.js文件解包记录

OK,至此所需要的数据就找完了,有了这些数据就可以把文件名称对应的文件内容写出来了

最终解包效果图如下:
【逆向分析】抖音小程序ttpkg.js文件解包记录


【逆向分析】抖音小程序ttpkg.js文件解包记录ttpkgUnpacker.rar2022-9-5 20:16 上传点击文件名下载附件
下载积分: 吾爱币 -1 CB
标签:
【逆向分析】抖音小程序ttpkg.js文件解包记录

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。