使用dnspy反编译修改源码
2023-4-8 09:34:33 Author: y4er.com(查看原文) 阅读量:8 收藏

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

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

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

一个最简单的exe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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了。

遇到了一个混淆之后的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

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


文章来源: https://y4er.com/posts/modify-code-using-dnspy/
如有侵权请联系:admin#unsafe.sh