如何使用Pyxamstore快速解析Xamarin AssemblyStore文件

关于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 pyxamstorepip install -r requirements.txt

配置完成后,执行工具安装脚本即可:

python setup.py install

此时,我们就可以直接通过调用“pyxamstore”命令来使用该工具了。

工具使用

解包

我们建议广大研究人员将该工具与apktool工具一起结合使用,效果更佳。

下列命令可以用于解包一个APK文件,并解包其中的Xamarin DLL文件:

apktool d yourapp.apkpyxamstore unpack -d yourapp/unknown/assemblies/

需要注意的是,被检测为使用LZ4压缩的程序集将在提取过程中自动解压缩。

重封装

如果你想要在AssemblyStore中直接修改DLL内容的话,你可以将Pyxamstore与解包过程中生成的assemblies.json一起使用,并创建一个新的assemblies.blob文件。只需在assemblies.json文件所在目录内执行下列命令即可:

pyxamstore pack

此时,你将需要自行拷贝新的manifest文件、blob文件和重封装/签名的APK文件。

项目地址

Pyxamstore:【GitHub传送门】

参考资料

Unpacking Xamarin AssemblyStore Blobs (Updated 12/10/22) | The Cobra Den

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs发送消息给钉钉机器人

1.钉钉添加机器人 1.1 新建一个群 --> 群设置 --> 机器人 1.2 机器人管理 --> 添加机器人 1.3 机器人--> 自定义-->添加 1.4 配置信息 备注1:密钥复制出来SEC2c689174c4a8ed49c8a7309a490cd98e0e7f7bc788bb7232d53c738eb5f5d008 备注2:…

深度学习框架TensorFlow2快速入门教程

01 深度学习框架TensorFlow2快速入门教程 目录结构 01 概述 02 准备OVF虚拟机镜像 03 导入Ubuntu22的初始化环境 04 使用VMWare拍摄快照进行备份 05 Docker环境的测试和使用 06 安装Nvidia容器工具包 07 GPU支持的TensorFlow的环境搭建和踩坑 08 拉取非GPU支持的TensorFlow镜…

[ffmpeg系列 02] 音视频基本知识

一 视频 RGB&#xff1a; AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB… Y&#xff1a;明亮度, Luminance或luma, 灰阶图&#xff0c; UV&#xff1a;色度&#xff0c;Chrominance或Chroma。 YCbCr: Cb蓝色分量&#xff0c;Cr是红色分量。 取值范围&#xff…

信息学奥赛一本通:装箱问题

题目链接&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1917 题目 1917&#xff1a;【01NOIP普及组】装箱问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 4117 通过数: 2443 【题目描述】 有一个箱子容量为V&#xfffd;(正整数&#xff0c…

Java-虚拟机-逃逸分析/栈上分配/标量替换

假设有下面一个类&#xff0c;本文会一直使用这个类演示 public class User{public int id;public String name; }逃逸分析&#xff1a; 逃逸指的是在方法中创建的对象&#xff0c;逃到方法外&#xff0c;那么逃逸分析&#xff0c;指的就是分析一个在方法内创建的对象&#xf…

一文搞懂Python Web开发 Django

简介 Django是一个主流的Python Web框架&#xff0c;用于快速开发 Web 应用程序。功能强大&#xff0c;Python Web应用开发的第一选择。 特点 ORM&#xff08;对象关系映射&#xff09;&#xff1a; Django 提供了一个强大的 ORM&#xff0c;允许开发者通过 Python 代码来定义…

拟杆菌在肠道感染中的矛盾作用

谷禾健康 拟杆菌门细菌是革兰氏阴性菌的代表&#xff0c;具有外膜、肽聚糖层和细胞质膜。它们无氧呼吸的主要副产物是乙酸、异戊酸和琥珀酸。是最耐氧的厌氧菌之一。 参与人体结肠中许多重要的代谢活动包括碳水化合物的发酵、含氮物质的利用以及胆汁酸和其他类固醇的生物转化。…

Qt中图片旋转缩放操作

在我们开发过程中&#xff0c;难免会遇到加载图片的问题&#xff0c;在上一个开发项目里我就遇到了图片缩放的问题&#xff0c;所以&#xff0c;我决定将这一部分好好研究&#xff0c;记录下来&#xff0c;希望对大家有帮助哟~ 在讲解之前&#xff0c;我们先看一看具体的展示效…

Java反射篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、除了使用new创建对象之外,还可以用什么方法创建对象?二、Java反射创建对象效率高还是通过new创建对象的效率高?三、java反射的作用四、哪里会用到反射机制?五、反射的实现方式:前言 前些天发现了一个巨牛的人工智能学习网站,…

阿里云配置服务器详细指南

阿里云服务器配置怎么选择合适&#xff1f;CPU内存、公网带宽和ECS实例规格怎么选择合适&#xff1f;阿里云服务器网aliyunfuwuqi.com建议根据实际使用场景选择&#xff0c;例如企业网站后台、自建数据库、企业OA、ERP等办公系统、线下IDC直接映射、高性能计算和大游戏并发&…

OJ练习第188题——队列中可以看到的人数

队列中可以看到的人数 力扣链接&#xff1a;1944. 队列中可以看到的人数 题目描述 示例 解题思路&#xff08;单调栈&#xff09; 分析图例可以发现&#xff0c;第 0个人可以看到的三个人的身高是严格递增的。如果满足 i<j&#xff0c;此时下标为 jjj 且靠后的人比下标为…

亚马逊新品推广的三种方法是什么?广告排名跟哪些因素有关?

亚马逊新品推广的三种方法是什么&#xff1f; 促销活动&#xff1a;新品上市时&#xff0c;可以通过促销活动吸引消费者的关注和购买欲望。例如&#xff0c;提供限时折扣、买一送一、赠品等促销方式&#xff0c;吸引消费者尝试新品。 社交媒体营销&#xff1a;利用社交媒体平…

零售EDI:Metro EDI项目案例

麦德龙Metro 总部位于杜塞尔多夫&#xff0c;在全球范围内经营批发和零售业务。在2018/2019 财年&#xff0c;麦德龙Metro 的全球销售额约为 270 亿欧元。从2016年开始&#xff0c;麦德龙Metro就开始对其当时约230家门店和20,000多家分销合作伙伴进行数字化整合&#xff0c;借助…

电商API接口——你搭建电商独立站电商应用的左膀右臂

当我们构建电商网站或应用时&#xff0c;常常需要获取淘宝商品的详细信息。为了实现这个功能&#xff0c;我们可以利用淘宝提供的开放平台API接口来获取商品数据。在这篇文章中&#xff0c;我们将学习如何设计一个商品详情API接口&#xff0c;并提供相应的代码示例。 首先&…

移动神器RAX3000M路由器不刷固件变身家庭云之五(高级应用):设置成maven私服

由于我们项目经常会使用一些自研的公共组件&#xff0c;把这些组件放在一个共同的maven私服&#xff0c;这样大家就可以自动下载这些组件了。 前面文章里&#xff0c;我们设置好了uhttpd和vsftpd两个服务&#xff0c;http服务把管理界面移到隐藏的子目录里了。 现在我们可以把…

vivado non-project

https://www.xilinx.com/video/hardware/using-the-non-project-batch-flow.html --video https://cloud.tencent.com/developer/article/1169476 bd related run_my_design.tcl 交互模式 start_gui stop_gui

【RabbitMQ】1 消息中间件MQ概述

目录 什么是消息中间件为什么使用消息中间件流量削峰应用解耦异步处理 主流消息中间件及选型选取原则RabbitMQRocketMQKafka如何选择 消息中间件应用场景电商秒杀案例拉勾B端C端数据同步案例支付宝购买电影票 什么是消息中间件 维基百科对消息中间件的解释&#xff1a;面向消息…

Android11 Framework Vendor下自定义系统服务

Android11 Framework Vendor下自定义系统服务_android vendor app 配置-CSDN博客

利用GitHub开源项目ChatGPTNextWeb构建属于自己的ChatGPT - Docker

Docker部署ChatGPTNextWeb ChatGPTNextWeb项目github开源地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 根据文档部署ChatGPTNextWeb 文档地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md 步骤一&#…

Pytorch框架学习笔记

官网- PyTorch Tensor 构造随机初始化矩阵 xtorch.rand(5,3) 构造全0矩阵&#xff0c;数据类型为long xtorch.zeros&#xff08;5,3,dtypetorch.long&#xff09; 获取维度信息 x.size(&#xff09; tensor加法 torch.add&#xff08;x&#xff0c;y&#xff09; xy y…