.NET 单文件执行程序拆解器 SingleFileExtractor
.NET 单文件执行程序拆解器 SingleFileExtractor
.NET 现在支持将程序打包为单文件格式,这方便了部署,问题是,我们不能直接看到程序中使用了哪些 DLL,更不能简单地通过查看文件属性的方式,看到这些 DLL 的版本。要是可以像使用 Zip 一样,可以打开这个合成的文件,直接查看内容就好了。
SingleFileExtractor 就是这样的工具。
它可以从单文件的应用程序中将其中包含的内容,包括程序集、配置文件等等,拆解到文件夹中,方便开发人员进行分析。
1. 安装
它的安装也很方便,通过 dotnet 工具的方式进行安装和使用。
dotnet tool install -g sfextract
注意,当前 2024/12/20 使用
dotnet tool install -g sfextract安装此工具,需要 .NET 6.0
2. 使用
2.1 命令行
sfextract [file] -o|--output [directory]
例如
sfextract Application.exe -o path/to/output/
2.2 列出其中的文件
sfextract Application.exe
3. 在程序中使用
在项目中安装 SingleFileExtractor.Core NuGet 包,
然后,使用 SingleFileExtractor 提供的 ExecutableReader 类来打开文件。
var reader = new ExecutableReader("application.exe");
3.1 读取启动信息
当你希望知道程序的入口点的时候,可以这样读取启动信息
var reader = new ExecutableReader("application.exe");
var startupInfo = reader.StartupInfo;
3.2 提取全部文件。
var reader = new ExecutableReader("application.exe");
// Validate if executable is a single file executable, and can be extracted
var isSingleFile = reader.IsSingleFile;
if (isSingleFile)
{
// Extract specific file entry
await reader.Manifest.Entries[0].ExtractToFileAsync("example.dll");
// , or create an in-memory stream of a specifc file entry
var stream = await reader.Manifest.Entries[0].AsStreamAsync()
// Extract all files to a directory
await reader.ExtractToDirectoryAsync("path/to/output");
}
3.3 提取指定内容到文件
var reader = new ExecutableReader("application.exe");
await reader.Manifest.Entries[0].ExtractToFileAsync("example.dll");
3.4 提取指定内容到流
var reader = new ExecutableReader("application.exe");
var stream = await reader.Manifest.Entries[0].AsStreamAsync()
4. 为什么创造它?
我正在处理的另一个程序需要我从单文件的执行程序中提取内容,另外我还看到有人在询问这个问题,所以,我决定将它开发为一个 dotnet 工具的形式,并使用 NuGet 包的形式发布。
项目地址:https://github.com/Droppers/SingleFileExtractor
.NET 单文件执行程序拆解器 SingleFileExtractor的更多相关文章
- 冰点文库下载器 v3.2.12(0314) 去广告单文件
冰点文库,免积分免登陆文档下载神器!付费文档免费下载工具.百度文库免费下载工具. 冰点文库下载器,免费下载文档工具,无需积分也无需登陆就能自由下载百度文库.豆丁网.丁香网.电器网.MBA ...
- Radmin Server-3.5 完美绿色破解版(x32 x64通用) 第三版 + 单文件制作方法
Radmin Server v3.5 汉化破解绿色版(x32 x64通用) 第三版 下载链接: https://pan.baidu.com/s/1qYVcSQo 2016年7月8日更新第三版1.修复在 ...
- webpack入坑之旅(五)加载vue单文件组件
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- 360随身WIFI程序单文件绿色版及网卡驱动(附使用感受)
大家好,我是Colin,今天刚收到传说中的360WIFI,拿到手后马上就进行了测试.就做工而言,19.9的价格算是比较公道的,网卡很小,做工还可以,带磨砂质感,而且还提供了一个耳机插头,可以当挂件一样 ...
- 一丢丢学习之webpack4 + Vue单文件组件的应用
之前刚学了一些Vue的皮毛于是写了一个本地播放器https://github.com/liwenchi123000/Local-Music-Player,如果觉得ok的朋友可以给个star. 就是很简 ...
- Struts2单文件上传原理及示例
一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里 ...
- Vue单文件组件
前面的话 本文将详细介绍Vue单文件组件 概述 在很多 Vue 项目中,使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页 ...
- C# 日志记录分级功能使用 按照日期,大小,或是单文件存储
本文将使用一个Nuget的一个组件库来实现一个简单强大的日志记录功能,包采用线程安全实现,所有的记录在后台完成,即使您在前台调用100万次方法,耗时也不过1000ms(具体时间依照电脑性能决定),支持 ...
- 系统垃圾清理利器CCleaner v5.30.6063绿色单文件版(增强版)
系统垃圾清理利器CCleaner现已更新至v5.30.6063,此次更新为Edge.IE浏览器提供了更好的清理功能,更新了Windows Explorer MRU清理功能,同时改善了应用程序中的SSD ...
- 10: vue-router和单文件组件
1.1 vue-router路由基本使用 官网: https://router.vuejs.org/zh/api/#router-link 1.安装vue-router bower info vue- ...
随机推荐
- Kubernetes ReplicaSet 控制器(十九)
前面我们一起学习了 Pod 的原理和一些基本使用,但是在实际使用的时候并不会直接使用 Pod,而是会使用各种控制器来满足我们的需求,Kubernetes 中运行了一系列控制器来确保集群的当前状态与期望 ...
- T2回家(home)题解
T2回家(home) 现在啥也不是了,虽然会了逆元,但是对期望概率题还是一窍不通,赛时相当于只推出了 \(n=1\) 的情况,结果运用到所有情况,理所应当只有20分. 题目描述 小Z是个路痴.有一天小 ...
- 用自定义功能区完成Excel两种颜色的交错填充
今天需要用Excel中的填充颜色完成两种颜色的交错填充 在excel中,选择一个颜色填充后,再切换到另一个颜色,再点击填充.操作起来会显得比较笨重 于是萌生了一个想法,是否可以通过Excel的自定义功 ...
- HDU-ACM 2024 Day1
T1009 数位的关系(HDU 7441) 考虑 \(l = r\) 的情况,此时只要计算一个数字,我们将其展开为一个字符串 \(S\).设 \(f_{i, j, k}\) 表示考虑了 \(S\) 的 ...
- vue axios的使用及操作
引入axios 并设置原型 Vue.prototype.$axios = axios; 在其他地方就可以this.$axios使用了 let param = _this.$qs.string ...
- 噢!JavaScript (2):对数组要小心使用delete
最近在重写我自己的静态博客生成器,虽然遇到的小问题挺多,但今早这个问题令我印象深刻. 发现问题 博客的文章基础数据储存在main.json中,其中专门有数组dateindex来储存经过排列后的文章顺序 ...
- house of cat
调用方法 调用链1 house of cat调用链 __malloc_assert 在 2.35 的 glibc 中源码如下 static void __malloc_assert (const ch ...
- NOIP2024模拟赛10:热烈张扬
NOIP2024模拟赛10:热烈张扬 T1 一句话题意:给定一颗树和两个玩家的起点 \(a,b\) 和各自的移动速度 \(da,db\).问:如果二人均以最优策略移动,问最后谁是赢家(先走到对方当前位 ...
- 基于sqli-labs Less-7 的sql高权读写注入详解
1. MySQL高权限读写简介 1.1 前置知识 数据库的高权用户对服务器上的文件进行读取写入操作,从而可以进行写入一句话木马来获得服务器权限或者读取服务器上的配置型文件等注入行为. select l ...
- Ansible自动化管理集群,Playbook语法
Ansible配置文件存在优先级的问题 ANSIBLE_CONFIG ansible.cfg 项目目录 .ansible.cfg 当前用户的家目录 /etc/ansible/ansible.cfg A ...