Elysian的日常 - C#反编译
type: channel
link: http://blog.icheguo.com/tag/C-反编译/
items: [C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行

[C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
type: item
date: 2021-09-14T18:02:23+08:00
description: 本文使用的工具下载地址为：https://github.com/cnxy/dnSpy/archive/v4.0.0.zip 或 dnSpy官方下载地址：https://github.com/0xd4d/dnSpy/releases/download/v4.0.0/dnSpy.zip 软件界面如下：该软件分别64位版本及32位版本，分别为dnSpy.exe 及 dnSpy-x86.exe，调试时请注意调试所对应软件版本。现在进入话题：一、首先编写一个Hello World的控制台运行程序，如下图所示：代码如下：using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ChangeString { class Program { static void Main(string[] args) { string str = "Hello World!"; Console.WriteLine(str); Console.ReadKey(); } } }二、编译并运行，如下图所示：在这里程序内部的str变量为“Hello World!”，现在，需要使用dnSpy工具，将内部str的变量改变并在线调试。三、使用dnSpy工具对程序进行反编译：使用dnSpy工具对刚才生成的ChangeString.exe进行反编译，如下图所示：在Main函数内右键点击菜单，在弹出的上下文菜单中选择“编辑方法(C#)”，如下图所示：将str变量的内容改为“Just For Test”，并点击“编译”按钮，如下图所示：点击“全部保存”按钮，在弹出的界面保持默认值并点击“确定”按钮，如下图所示：保存完成后，点击“启动”按钮，在弹出的界面保持默认值并点击“OK”按钮，接着自动启动应用程序，如下图所示程序成功地运行！注意：编译时请注意以下事项，否则将不能进行编译：还有其他DLL模块的，必须把它包含进来；如有其他反编译后有不能识别的字符，请手工修改OK之后再进行编译。另外，这个程序不仅对EXE有效，同样对DLL有效，请自行试验，谢谢！{callout color="#f0ad4e"}作者：CNXYGithub：https://www.github.com/cnxy出处：http://cnxy.me本文版权归作者和博客园共有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则保留追究法律责任的权利。如果文中有什么错误，欢迎指出，谢谢！{/callout}