rickw 发表于 2019-4-3 14:13

解除ILDASM无法打开“受保护的模块”的限制



0x01 ildasm
ildasm是微软提供的IL反编译工具。可以反编译.Net的程序集。
但是在打开某些程序集时会提示“受保护的模块--无法反汇编”。


0x02 原因分析
这个限制是利用了微软官方提供的一个属性标注。


只要有这个属性标注的程序集,ildasm就会拒绝打开。
这实际上就是一种君子协定。

0x03 解决方法(二种)
0x031 解决方式一(patch掉属性检测的代码)
这里我们直接用IDA打开 ildasm.exe 进行反编译,选择加载调试符号。

因为我们已经知道了一个关键线索 SuppressIldasm 。
所以我们直接在文件中搜索这个字符串。


找到后我们看到有两处数据引用。


通过名称我们可以判断关键函数是第一处引用。


定位到这个函数,很明确,我只要修改这个函数,让它返回0即可。


按F2应用修改,查看结果。


最后将修改保存到input file。

到这里就结束了。我们再打开文件试试


ok,可以正常打开。

0x032解决方式二(不修改代码,直接修改字符串)
因为我们知道这个限制是一个君子约定,我们只要打破这个约定就好了。

这个方式很简单。跟上面一样用IDA打开,然后搜索 SuppressIldasm 。
找到这个字符串后,再直接随便修改这个字符串为其它的值即可。




按F2应用修改,查看结果。


最后将修改保存到input file。

到这里就结束了。我们再打开文件试试


ok,可以正常打开。

0x04 最后附上成品(版本net 4.6.1 tools)


smz83 发表于 2019-4-3 14:49

大神啊!厉害啊!

beijihu999 发表于 2019-4-3 16:06

方法和操作说的很简洁,学到了

zphxh2009 发表于 2019-4-3 20:30

谢谢分享谢谢分享

YasudaKoudou 发表于 2019-4-3 22:27

厉害,学习了,谢谢分享!

dakjwx2014 发表于 2019-4-4 08:44

        热心回复!

comcnren 发表于 2019-4-4 08:55

感谢分享,楼主辛苦

getto1234 发表于 2019-4-4 10:07

解除ILDASM无法打开“受保护的模块”的限制 [

shanqln 发表于 2019-9-6 13:26

学习收藏 了。。。。

flyfox 发表于 2020-9-13 01:39

感谢楼主分享。
页: [1] 2
查看完整版本: 解除ILDASM无法打开“受保护的模块”的限制