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

VSole2022-09-08 08:24:11

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

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

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

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

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

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

3.1 ttpkg的文件结构

这里通过搜索引擎查找相关资料,居然只找到一篇相关的,大概结构可参考这篇文章:https://blog.csdn.net/weixin_29002961/article/details/117869108
这里贴出文件的大概结构信息(实际肯定有差距)

3.2 通过WinHex分析数据

打开文件,第一眼就可以看到大量的明文数据,前四个字节是固定标识,后面很多文件路径之类的东西,再往下翻会看到文件内容之类的东西
文件头
部分文件内容
 
我这里复制了一份导入到可以格式化代码的编辑器里面,通过代码格式化可以看出大概的文件结构
之所以要复制一份是防止破坏源文件的结构(你猜我是怎么知道的[手动狗头])
我这里使用的phpstorm导入的文件,通过代码格式化后可以看到31行有一个json的开始,并且没有乱码之类的,结束的地方在1210行,后面再跟的就是一个js代码的开头了,可以猜测在文件的某个地方存有文件开始位置和结束位置或者文件长度的数据
打开WinHex在文件顶部,查看两个明文之间的间距是多少,这种一般都会有一定的规律,这里看到间距的长度为CC是16进制的,所以在十进制中代表的12,也就是每个明文路径之间有十二个字节的间距,这里经过多次对比后确定长度就是C

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

选中数据后点鼠标右键选择编辑-复制选块-十六进制数值
>
然后粘贴到编辑器里面,并把每个端后面的文件名复制到后面,按照两个字符为一组用空格进行分割,下面是我分析出来的数据
蓝色框里代表不同的数据,红色框里代表相同的数据,通过分析可得出第三个框里的数据为文件名称的长度,其余的都是结构体剩余的字节,比如int类型占用四个字节,'app-service.js'的长度为14,所以对应的16进制为E'app.js'的长度为6,在16进制里也就是'6',这里定位了文件名称长度的位置,就是每段空白字符的第9-12个字节,因为使用的是大端存储的,所以是逆序的,大端存储和小端存储可以百度一下。

文件顶部数据比较特殊,通过之前的分析可分析出以下数据:版本号4个空字节占用文件个数第一个文件名称长度,这里我们发现文件头里面并没有我们需要的文件起始位置和结束位置的信息

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

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

数据长度也通过同样的方式分析,通过右键把json开始的{设置为选块起始位置,再把结尾的地方选择为选块结束位置,即可

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

最终解包效果图如下:

文件头
本作品采用《CC 协议》,转载必须注明作者和本文链接
恶意软件为了不让我们很容易反编译一个apk,会对androidmanifest文件进行魔改加固,本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件,我们学完之后可以动手实践。
文件上传前端JS 防护,通过抓包修改,或插件js禁用来绕过。后端黑名单上传陌生后缀 .php3 php5上传配置文件 .htaccess通过 双写 ,大小写,基于windows 特性
此文章可以说是对于想研究“文件上传漏洞”的新人是必看的内容,如果你不看此笔记,文件上传漏洞实战你能搞明白吗?内部:扫描工具探针的上传地址:后台的上传地址 3、学文件上传漏洞篇要注意哪些关键地方?
通过比对发现两个文件中都存在大量的16进制“4D”数据,在整个文件数据中占比都高于58%。在正常情况下该文件中占比最多的数据是“00”,所以推测工程文件无论是否设置文件保护密码,都要使用16进制“4D”进行异或加密。下面进行比对分析无密码分析有密码分析所以使用“4D”分别对这两个文件进行异或运算,结果在两个文件中都发现了一些可读字符,说明思路是对的,当异或运算之后的文件就是明文文件
通过找源码代码审计后getshell。测试在某次测试过程中发现,通过泄漏的md5进入后台,在后台配置中有处“上传logo”的功能。会提示“上传失败”。只有正常图片+图片后缀 会返回图片路径。第一行 导入命名空间“phpWeChat” 内的 Upload 类,下面是引用包含一些文件。再往下,$action是用于下面 switch函数内做索引匹配而调用不同功能的。$action的值是通过 GET方式获取 “action”参数的值。
A:在网络传输不稳定的情况下,导致文件传输不完整,可能会导致误报,除了这个之外很少有人会在上传过程中改变原有的文件类型. Q:能否绕过检测?
最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件(大都数是4GB以上)的http上传,并且要求支持http断点续传。笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本概念,其实非常简单,这里在简要归纳一下,方便记忆:
文件顶部数据比较特殊,通过之前的分析可分析出以下数据:版本号、4个空字节占用、文件个数、第一个文件名称长度,这里我们发现文件里面并没有我们需要的文件起始位置和结束位置的信息3.4 定位文件起始位置和结束位置因为第一个文件为json,所以我们就会想起最开始的那个json,先找一下偏移位置是多少,再去数据里找相应的16进制数据。
依赖于特定硬件环境的固件无法完整模拟,需要hook掉其中依赖于硬件的函数。LD_PRELOAD的劫持对于特定函数的劫持技术分为动态注入劫持和静态注入劫持两种。网上针对LD_PRELOAD的劫持也有大量的描述
VSole
网络安全专家