如何使用Pyxamstore快速解析Xamarin AssemblyStore文件
2023-12-29 19:4:59 Author: FreeBuf(查看原文) 阅读量:7 收藏


关于Pyxamstore

Pyxamstore是一款针对Xamarin AssemblyStore文件(assemblies.blob)的强大解析工具,该工具基于纯Python 2.7开发,支持从一个APK文件中解包并重封装assemblies.blob和assemblies.manifest Xamarin文件。

什么是assemblies.manifest和assemblies.blob?
assemblies.manifest文件是一个ASCII文件,它列出了Xamarin DLL文件的名称、ID和其他元数据。该文件中唯一有用的真正数据是Name字段,因为assemblies.blob文件中并没有DLL名称数据,而这个名称值,本质上是存储在assemblies.blob中的DLL的原始文件名。
而assemblies.blob则更为重要,也需要我们进行更多的分析。因为它是一个二进制结构,且引用了很多其他的类,我们将这个结构称为AssemblyStore。AssemblyStore的Header为20个字节,包括magic XABA、版本(当前为1)和包含的程序集文件数,紧跟在Header后面的是一个名为AssemblyStoreAssembly的。类对于每个包含的程序集文件,都有一个一个24字节的数据结构。它们没有ID,但似乎是按正确的顺序序列化的(例如,第一个结构是索引0,然后是索引1,以此类推)。DataOffset和DataSize很重要,因为它可以告诉我们DLL在assembly.blob文件中的位置,以及要提取的字节数。
assemblies.blob其余的数据就是DLL的实际内容了,结合assemblies.manifest的数据,我们就可以提取和命名相关联的DLL文件了。
工具要求

1、Python 3

2、future v0.18.3

3、lz4 v4.3.1

4、xxhash 3.2.0

工具安装
由于该工具基于Python 2.7开发,因此我们首先需要在本地设备上安装并配置好Python 2.7环境。接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/jakev/pyxamstore.git
然后切换到项目目录中,使用pip3工具和项目提供的requirements.txt文件安装该工具所需的其他依赖组件:
cd pyxamstore
pip install -r requirements.txt
配置完成后,执行工具安装脚本即可:
python setup.py install
此时,我们就可以直接通过调用“pyxamstore”命令来使用该工具了。
工具使用

解包

我们建议广大研究人员将该工具与apktool工具一起结合使用,效果更佳。
下列命令可以用于解包一个APK文件,并解包其中的Xamarin DLL文件:
apktool d yourapp.apk
pyxamstore unpack -d yourapp/unknown/assemblies/
需要注意的是,被检测为使用LZ4压缩的程序集将在提取过程中自动解压缩。

重封装

如果你想要在AssemblyStore中直接修改DLL内容的话,你可以将Pyxamstore与解包过程中生成的assemblies.json一起使用,并创建一个新的assemblies.blob文件。只需在assemblies.json文件所在目录内执行下列命令即可:
pyxamstore pack
此时,你将需要自行拷贝新的manifest文件、blob文件和重封装/签名的APK文件。
项目地址
Pyxamstore

GitHub - jakev/pyxamstore: Python utility for parsing Xamarin AssemblyStore blob files

FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......
扫码添加小蜜蜂微信回复“加群”,申请加入群聊

https://www.thecobraden.com/posts/unpacking_xamarin_assembly_stores/

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651253272&idx=4&sn=cce84d76fcbc79acb7b5576c1ca765ec&chksm=bc736ee1eafeb0be410abdb3210973a7c0cfdefee06b6115a64609735e65f6ae077655b1f9a6&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh