当前位置: 首页 > news >正文

ilasm 和 ildasm编译和反编译工具介绍使用教程

目录

  • 前言
  • 一、使用 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.1IL_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 /output=FiddlerBackendSDK.dll /dll

说明:该命令调用 ilasm.exe 程序把当前目录的 FiddlerBackendSDK.il 文件编译成FiddlerBackendSDK.dll并输出到当前目录,你可以改成你的文件名和输出文件名。然后你就得到了编译好后的 dll 文件

http://www.lryc.cn/news/14660.html

相关文章:

  • 代码随想录【Day20】| 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
  • C++空指针和野指针
  • LinkedList正确的遍历方式-附源码分析
  • 【蓦然回首忆Java·基础卷Ⅱ】
  • Mybatis源码分析系列之第二篇:Mybatis的数据存储对象
  • 防护设备检测实验室建设完整方案SICOLAB
  • Linux知识之主机状态
  • 是时候为您的银行机构选择构建一个知识库了!
  • 「TCG 规范解读」第7章 TPM工作组 TPM 总结
  • 一、Plugin Constructing the Boilerplate
  • 15、存储过程与函数
  • uniapp 原生安卓开发插件(module),以及android环境本地调试(二)
  • 【Java期末复习】《面向对象程序设计》练习库
  • 照片文件损坏能修复吗?
  • Git分布式版本控制工具
  • Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查
  • 最全Linux驱动开发全流程详细解析(持续更新)
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小 | 机试题算法思路 【2023】
  • 网上插画教学哪家质量好,汇总5大插画培训班
  • 对云原生集群网络流量可观测性的一点思考
  • 借力英特尔® Smart Edge,灵雀云 ACP 5G 专网解决方案获得多维度优化加速
  • 【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示
  • EasyExcel 让Excel导入导出更简单
  • 华为OD机试 - 需要广播的服务器数量 | 机试题算法思路 【2023】
  • 三次握手四次挥手详细解析面试常问
  • 组合由于继承
  • 大学计算机基础 知识点总结
  • 手撸React组件库前必须清楚的9个问题
  • 试用国内及国外AI绘图软件后的总结
  • DJI 无人机 Onboard SDK ROS 功能包demo运行