• dnSpy进行反编译修改并编译运行EXE或DLL


    dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行

     本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!

     


     

    本文使用的工具下载地址为:

     

     

    或 dnSpy官方下载地址:

     

     

    软件界面如下:

     

     

    该软件分别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有效,请自行试验,谢谢!

  • 相关阅读:
    Es module vs require
    phaser3 画虚线实现
    新的计划
    [转]Boostrap Table的refresh和refreshOptions区别
    Storing Java objects in MySQL blobs
    【转】Ubuntu下搜狗输入法突然无法输入中文
    团队作业六
    团队作业七
    团队作业四
    团队作业三
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/7885347.html
Copyright © 2020-2023  润新知