ikdasm工具也是distributed with Mono,它比monodis更健壮,不幸的是,monodis崩溃并显示消息“Segmentation fault:11”。维护人员明确建议使用ikdasm而不是monodis:https://github.com/mono/mono/issues/8900#issuecomment-428392112 用法示例(使用monodis当前无法处理的程序集):
function dll_version {
local dll="$1"
local version_line
local version
version_line="$(./dotnet-ildasm "$dll" | grep AssemblyFileVersionAttribute)"
# Uses SerString format:
# 01 00 is Prolog
# SZARRAY for NumElem
# version chars for Elem
# 00 00 for NamedArgs
# See:
# https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf#%5B%7B%22num%22%3A2917%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C87%2C321%2C0%5D
[[ $version_line =~ \(\ 01\ 00\ [0123456789aAbBcCdDeEfF][0123456789aAbBcCdDeEfF]\ (.*)\ 00\ 00\ \)$ ]]
dotcount=0
for i in ${BASH_REMATCH[1]}; do
if [[ $i =~ ^2[eE]$ ]]; then
(( dotcount++ ))
fi
if (( dotcount == 3 )); then
break
fi
echo -n -e "\u$i"
done
}
6条答案
按热度按时间u1ehiz5o1#
尝试匹配跨越整行的版本号:
在我的(少数)测试中,二进制文件的
AssemblyVersion
总是最后的结果。xpszyzbs2#
根据Jb Evain的建议,您可以使用Mono Disassembler。
dgiusagp3#
ikdasm
工具也是distributed with Mono,它比monodis
更健壮,不幸的是,monodis
崩溃并显示消息“Segmentation fault:11”。维护人员明确建议使用ikdasm
而不是monodis
:https://github.com/mono/mono/issues/8900#issuecomment-428392112用法示例(使用
monodis
当前无法处理的程序集):ryevplcw4#
这是一个非常老的问题,几乎所有的东西都改变了,但是从dotnet 2.1开始(所以你可以
dotnet tool install
),你可以安装dotnet-ildasm
:你可以使用这个函数:
yxyvkwin5#
要使用monodis只返回vision,请使用以下代码
安装包:https://command-not-found.com/monodis
例如在ubuntu中
guz6ccqo6#
另一种选择是使用
exiftool
,如: