前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dnSpy_dnspy官网

dnSpy_dnspy官网

作者头像
全栈程序员站长
发布2022-09-20 10:45:50
10.3K0
发布2022-09-20 10:45:50
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君

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

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

dnSpy_dnspy官网
dnSpy_dnspy官网

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

使用技巧

edit method

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

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

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

analyze

找到某一个方法,右键analyze

dnSpy_dnspy官网
dnSpy_dnspy官网

show compiler generated code

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

dnSpy_dnspy官网
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官网
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官网
dnSpy_dnspy官网
代码语言:javascript
复制
// 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官网
dnSpy_dnspy官网

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • https://github.com/0xd4d/dnSpy
  • 使用技巧
    • edit method
      • analyze
        • show compiler generated code
          • 右键菜单的Merge with Assembly
            • Reference another assembly
            • 不支持async和await
              • 关于async的反编译
                • Search in framework assemblies
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档