机关单位网站建设合同,专业做网站官网,2023最火的游戏名,注册有限公司的流程和条件目录前言一、使用 ildasm 反编译 dll 文件二、使用 ilasm 将il文件编译成 dll 或 exe 文件前言
文本讲述怎么通过 ildasm 工具将 dll 文件进行反编译为 il 文件#xff0c;修改 il 文件后再如何通过 ilasm 工具将 il 文件反编译成 dll 或 exe 文件。
ildasm工具#xff1a;…
目录前言一、使用 ildasm 反编译 dll 文件二、使用 ilasm 将il文件编译成 dll 或 exe 文件前言
文本讲述怎么通过 ildasm 工具将 dll 文件进行反编译为 il 文件修改 il 文件后再如何通过 ilasm 工具将 il 文件反编译成 dll 或 exe 文件。
ildasm工具用于将dll文件反编译成可读的 il 文件(il是.NET框架中中间语言的缩写)
ilasm工具用于将il文件编译成可执行的dll或exe文件
如果你安装了 Visual Studio 开发工具它会自带这两个工具不安装的话可能会找不到这两个工具和.NET框架开发语言的编译和反编译有关。 一、使用 ildasm 反编译 dll 文件
1.双击ildasm.exe运行ildasm工具。
ildasm 工具位置 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe 2.把要反编译的 dll 文件拖入运行的 ildasm 里
效果如下
你可以点击树形图展开查看所有的类和方法。
可以看到 IL_0000: ldarg.1、IL_0006: ret这样的指令这些指令就对应着不同的含义和执行顺序简单来说可读代码最终就是编译成为了这样的操作指令计算机就是根据这些指令去操作和执行的。
关于 il 文件的指令可以参考如下文章 IL指令详细 ILDasm反编译工具的基础知识 读懂IL代码就这么简单 C# 构造函数避免IL(反编译)代码膨胀的方法
3.如果 il 文件拖到 ildasm 里提示 “受保护的模块 - - 无法进行反编译”
如果 il 文件拖到 ildasm 里提示 “受保护的模块 - - 无法进行反编译”原因是SuppressIldasmAttribute这个属性导致的。
关于SuppressIldasmAttribute这个属性它可以在程序集中声明声明这个属性后ILDasm便不对这个程序集进行反汇编从而
起到一定程度的保护作用。
简单来说就是你的 il 文件里有 SuppressIldasmAttribute 相关代码ildasm 检测到了这个代码就不反编译了。
解决办法先把 ildasm.exe 备份一下然后使用 WinHex 把 ildasm.exe里的 SuppressIldasmAttribute 去除。
操作步骤
1下载WinHex WinHex (链接https://pan.baidu.com/s/17LYCOuPJaxo_70q4fua4eQ 提取码ej5b)
2 把C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\下的 ildasm.exe 拖进 WinHex 里搜索SuppressIldasmAttribute 字符串然后把 SuppressIldasmAttribute 随便改成其他的字符串比如aaa啥的下图改成了TianFangIldasmAttribute 。
3保存下然后再把 il 文件拖到 ildasm 里就不会提示“受保护的模块 - - 无法进行反编译”了。
4.把要反编译的 dll 文件转储为il文件
点击文件选择转储点击确定选择转换后位置和输入转换后的文件名 然后你就得到了一个反编译后的 il 文件格式的文件你可以用常见的文本编辑器打开并进行编辑和修改。
二、使用 ilasm 将il文件编译成 dll 或 exe 文件
上面你已经得到了反编译的 il 文件等你修改好了 il 文件可以通过使用 ilasm 工具将 il 文件编译成 dll或 exex 文件。
介绍下 ilasm 工具位置 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe 1.cmd 命令行进入il 文件所在目录然后输入类似如下命令
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe FiddlerBackendSDK.il /outputFiddlerBackendSDK.dll /dll说明该命令调用 ilasm.exe 程序把当前目录的 FiddlerBackendSDK.il 文件编译成FiddlerBackendSDK.dll并输出到当前目录你可以改成你的文件名和输出文件名。然后你就得到了编译好后的 dll 文件