.net-core:相当于 ILDASM / ILASM
.net-core: Equivalent of ILDASM / ILASM
.net-core 是否有 ILDASM / ILASM 的等价物?
具体来说,我正在寻找在 Linux 上运行的东西(因此为什么要使用 .net-core)。
似乎没有在 Linux 上提供这些功能的本机 Microsoft 工具,并且它当前未内置到 dot-net-core 中。
但是,Mono 允许对 IL 代码进行汇编和反汇编:
Installation Instructions can be found here.
您要找的是:
ilasm - For assembling
monodis - For disassembling
这些可以在包 mono-utils 中找到:
例如在 Debian 8 上,我做了以下操作:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian jessie" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
apt-get install mono-devel mono-utils
但是,仅供参考,对于那些试图创建导出的人来说,Mono 似乎无法处理 x64 导出语法。
ildasm 和 ilasm 工具都是使用来自此存储库的 CoreCLR 构建的:https://github.com/dotnet/coreclr。它们包括与 Windows 附带的版本相似的功能(无 GUI 等)。
发布的 nuget 包也包含它们 (https://www.nuget.org/packages?q=ildasm),但它们是特定于平台的,并且还需要匹配的 CoreCLR 版本才能使用,因此它们不能直接通过 nuget 使用。在您的平台上 运行 这些最简单的方法是从 coreclr 存储库的源代码构建它们。
让我们 'install' ildasm 工具使用相关的 nuget-package:
- 定义 RID(运行时标识符)
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- 下载包 运行time.{RID}.Microsoft.NETCore.ILDAsm。对于我的情况是:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- 解压缩并提取可执行文件'/运行次/{RID}/native/ildasm'
- 授予它执行权限并复制到 .NET 运行time 文件夹(调用 dotnet --list-运行times 列出 运行次)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- 创建符号链接
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- 运行 ildasm
./ildasm {path}/project.dll >> {path}/project.il
相同的步骤适用于 ilasm。
作为替代方法,考虑使用 dotnet-ildasm 工具:
# install .net core runtime if required
# sudo apt-get update; \
# sudo apt-get install -y apt-transport-https && \
# sudo apt-get update && \
# sudo apt-get install -y dotnet-runtime-3.0
# find required tool
dotnet tool search ildasm
# output:
# Package ID Latest Version Authors Downloads Verified
# ---------------------------------------------------------------------------
# dotnet-ildasm 0.12.2 pjbgf 100154
# dotasm 1.0.1 DotAsm 434
# install tool
dotnet tool install -g dotnet-ildasm
输出IL到文件:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il
.net-core 是否有 ILDASM / ILASM 的等价物?
具体来说,我正在寻找在 Linux 上运行的东西(因此为什么要使用 .net-core)。
似乎没有在 Linux 上提供这些功能的本机 Microsoft 工具,并且它当前未内置到 dot-net-core 中。
但是,Mono 允许对 IL 代码进行汇编和反汇编:
Installation Instructions can be found here.
您要找的是:
ilasm - For assembling
monodis - For disassembling
这些可以在包 mono-utils 中找到:
例如在 Debian 8 上,我做了以下操作:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian jessie" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
apt-get install mono-devel mono-utils
但是,仅供参考,对于那些试图创建导出的人来说,Mono 似乎无法处理 x64 导出语法。
ildasm 和 ilasm 工具都是使用来自此存储库的 CoreCLR 构建的:https://github.com/dotnet/coreclr。它们包括与 Windows 附带的版本相似的功能(无 GUI 等)。
发布的 nuget 包也包含它们 (https://www.nuget.org/packages?q=ildasm),但它们是特定于平台的,并且还需要匹配的 CoreCLR 版本才能使用,因此它们不能直接通过 nuget 使用。在您的平台上 运行 这些最简单的方法是从 coreclr 存储库的源代码构建它们。
让我们 'install' ildasm 工具使用相关的 nuget-package:
- 定义 RID(运行时标识符)
dotnet --info
# execution result
..
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64 # <----
..
- 下载包 运行time.{RID}.Microsoft.NETCore.ILDAsm。对于我的情况是:runtime.ubuntu.18.04-x64.Microsoft.NETCore.ILDAsm
- 解压缩并提取可执行文件'/运行次/{RID}/native/ildasm'
- 授予它执行权限并复制到 .NET 运行time 文件夹(调用 dotnet --list-运行times 列出 运行次)
chmod +x ildasm
sudo mv ildasm /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/
- 创建符号链接
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/{version}/ildasm ildasm
- 运行 ildasm
./ildasm {path}/project.dll >> {path}/project.il
相同的步骤适用于 ilasm。
作为替代方法,考虑使用 dotnet-ildasm 工具:
# install .net core runtime if required
# sudo apt-get update; \
# sudo apt-get install -y apt-transport-https && \
# sudo apt-get update && \
# sudo apt-get install -y dotnet-runtime-3.0
# find required tool
dotnet tool search ildasm
# output:
# Package ID Latest Version Authors Downloads Verified
# ---------------------------------------------------------------------------
# dotnet-ildasm 0.12.2 pjbgf 100154
# dotasm 1.0.1 DotAsm 434
# install tool
dotnet tool install -g dotnet-ildasm
输出IL到文件:
# go to project folder
cd ../project/bin/Debug/netx.x
dotnet ildasm program.dll -o program.il