dnSpy_dnspy官网

dnSpy_dnspy官网https://github.com/0xd4d/dnSpy下载压缩包之后,解压,发现目录里面有3个exe文件需要用管理员运行dnSpy.exe,然后打开exe文件,设置好断点,然后start使

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

https://github.com/0xd4d/dnSpy

下载压缩包之后,解压,发现目录里面有3个exe文件

dnSpy_dnspy官网

 

需要用管理员运行dnSpy.exe,然后打开exe文件,设置好断点,然后start

 

使用技巧

edit method

在左侧的导航栏,找到某个类里面的某个方法,右键,会有2个edit method

1. 白色的是重命名方法,会同步修改reference处的引用

2. 绿色的是修改方法体,也就是方法里面的内容

 

analyze

找到某一个方法,右键analyze

dnSpy_dnspy官网

 

 show compiler generated code

这个可以用来查看async关键字生成的state machine的代码

dnSpy_dnspy官网

 

 

右键菜单的Merge with Assembly

假如你打开了HearthBuddy的exe,现在想要引用另外一个dll文件,那就可以直接merge with assembly。另外一个dll文件里面的类,会被直接导入到HearthBuddy.exe里面

 

Reference another assembly

https://github.com/0xd4d/dnSpy/issues/357

应该用第一个图标,浏览

dnSpy_dnspy官网

 

不支持async和await

关于async的反编译

https://github.com/0xd4d/dnSpy/issues/687#issuecomment-354990427

await is just synthetic sugar for what you see in the decompiled code. Usually ILSpy converts this back to what a programmer would normally write, but the version that dnSpy uses didn’t have that implemented yet. You can find all implemented language features for the latest version of ILSpy here, but keep in mind that dnSpy still uses ILSpy 2.x, not 3.x.

 

 

 取消反编译async methods

dnSpy_dnspy官网

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x060013A3 RID: 5027 RVA: 0x000BD93C File Offset: 0x000BBB3C
private Task method_49(TournamentScene tournamentScene_0)
{
    DefaultBot.Struct88 @struct;
    @struct.defaultBot_0 = this;
    @struct.tournamentScene_0 = tournamentScene_0;
    @struct.asyncTaskMethodBuilder_0 = AsyncTaskMethodBuilder.Create();
    @struct.int_0 = -1;
    AsyncTaskMethodBuilder asyncTaskMethodBuilder_ = @struct.asyncTaskMethodBuilder_0;
    asyncTaskMethodBuilder_.Start<DefaultBot.Struct88>(ref @struct);
    return @struct.asyncTaskMethodBuilder_0.Task;
}

找到Struct88的定义,然后找到里面的MoveNext方法,右键edit method body

然后找到https://www.cnblogs.com/chucklu/p/11184577.html 263行以及672行,进行替换。

 

Search in framework assemblies

dnSpy_dnspy官网

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168379.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 创建InetAddress对象的四个静态方法[通俗易懂]

    创建InetAddress对象的四个静态方法[通俗易懂]InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalH

    2022年6月23日
    24
  • 给Ubuntu18.04(18.10)安装mac os主题

    给Ubuntu18.04(18.10)安装mac os主题2020-04-29Ubuntu20.04的Gnome版本与18.04有些许差别,完全按照本文效果并不好,20.04的美化博主正在连夜赶制中,尚未完成,敬请期待,如果实在等不及了,就看下面链接的

    2022年7月3日
    31
  • win10怎么查看端口占用_怎么查看端口是否关闭

    win10怎么查看端口占用_怎么查看端口是否关闭**Step1:**使用管理员模式打开命令提示符窗口Step2:进入窗口之后,输入netstat-ano命令,可以查看所有被占用的端口**Step3:**也可以使用netstat-ano|findstr80,查看具体端口号占用情况**Step4:**输入tasklist|findstr“80”命令,端口号加英文双引号,可以查找到具体进程**Step5:**找到具体的进程名称之后,可以到任务管理器—》详细信息页面,结束进程,释放端口…

    2022年7月27日
    5
  • jlink 与 swd 接口定义

    jlink 与 swd 接口定义1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    86
  • dos命令怎么进入一个文件夹(cmd强制删除文件夹命令)

    在开发中我们经常需要进入指定文件夹:我来演示下dos命令进入这个文件夹:D:\soft\Gitwin+R—->输入cmd进入dos命令端输入“cd盘符名:\文件夹名”,比如想进入的目录:D:\soft\Git文件,则输入“cdD:\soft\Git”,按“回车”键输入“d:”,按“回车”键到此就进入到了指定文件夹了若要显示访问目录的具体信息,可输…

    2022年4月15日
    40
  • es6删除数组指定元素_如何删除数组中的元素

    es6删除数组指定元素_如何删除数组中的元素arr.splice(arr.findIndex(item=&gt;item.id===id),1)//item只是参数可以写成i或者v都可以,//后面的额id是数组的id,是不能随便写的,如果你数组里面写的是id,这里就写id,如果数组里面写的是num,那这里就写num,//===后面的id是你想要删除的元素的id号,同理,如果你数组里面写的是num,那这里…

    2022年8月11日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号