5

使用dnspy反编译修改源码

 1 year ago
source link: https://y4er.com/posts/modify-code-using-dnspy/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用dnspy反编译修改源码

 2023-04-08  2023-04-08  约 533 字   预计阅读 2 分钟 

解决一些混淆之后patch源码的问题。

dnspy是csharp中反编译神器,只要你接触反编译相关的,那你一定离不开他。 官方的GitHub仓库已经不维护了,不过有人在官方基础上维护了另一个仓库。本质没变,都是反编译神器。

一般情况下使用dnspy来改源码都是因为没有可编译的项目,你要是有可编译的项目那改项目就行了。

一个最简单的exe

using System;

namespace ConsoleApp4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello");
            Console.ReadKey();
        }
    }
}

执行后打印hello字符串。

将其使用dnspy修改

https://y4er.com/img/uploads/modify-code-using-dnspy/1.png

不论是编辑方法、编辑类,都可以直接修改代码。

https://y4er.com/img/uploads/modify-code-using-dnspy/2.png

我改成输出hello bro,点击编译,然后点击保存

https://y4er.com/img/uploads/modify-code-using-dnspy/3.png



https://y4er.com/img/uploads/modify-code-using-dnspy/4.png

然后再执行exe就会输出hello bro了。

编辑IL指令

遇到了一个混淆之后的dll,想要在不反混淆的情况下修改dll中的一个方法体。

https://y4er.com/img/uploads/modify-code-using-dnspy/5.png

使用dnspy编辑方法体时,编译出错,报错内容大多是不识别Unicode字符串,导致编译不通过。

怎么解决?可以通过编辑il指令来达到修改代码逻辑的效果。

https://y4er.com/img/uploads/modify-code-using-dnspy/6.png

还拿前面的hello程序举例,编辑il指令,修改hellohello bro

https://y4er.com/img/uploads/modify-code-using-dnspy/7.png

点击确定,然后保存即可。混淆程序保存的时候勾上这几个选项可能会有所帮助。

https://y4er.com/img/uploads/modify-code-using-dnspy/8.png

文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK