【转载】教你使用 Reflexil 反编译.NET

【转载】教你使用 Reflexil 反编译.NET

简介

反编译的方式有很多种,其实最靠谱的还是IL反编译。

如果不懂IL可以尝试我这边文章入门:http://www.wxzzz.com/278.html

不过我下面要说的不是IL这种底层的代码反编译,而是Reflector中的Reflexil插件进行反编

也许有人会说Reflector不就是反编译了么,为什么还要用Reflexil这个插件? Reflector 仅仅是反编译出源码给你看,并不能在修改后编译回去。所以我们需要使用Reflexil这个插件进行反编译回去。

.NET 三种反编译方式

这里顺便介绍下我所知道的三种反编译回去的方式:

  1. 直接修改IL代码(当然,这比较难,需要熟悉IL汇编,但是也是最实用的。也许我会在以后的文章详细阐述)
  2. 使用Reflector进行整个代码项目的导出,然后用VS进行修改后编译(在大型项目中,如果有很多其他的dll引用,也许会让你寸步难行,无法使用VS编译通过,所以大型项目直接用IL汇编反编译关键代码即可)
  3. 使用Reflexil插件进行直接反编译(似乎这种要比第二种方法要好的多,至少很省事。其实实际使用起来也不是特别的方便,本文会进行一个稍微详细的使用介绍)

Reflexil 安装

在此之前你需要先去下载Reflector和Reflexil插件,这些你可以去百度或谷歌上面下载到。(如果你不会…那下面的文章不用看了)

下载好之后首先安装Reflector程序,安装完毕后在把Reflexil插件放到Reflector程序目录下面(其实是个dll文件而已),如下图所示

Reflexil_Install

然后打开Reflector,在工具栏依次点击 Tools -> Add-Ins... ,如下图所示

Reflexil_Install2

然后在弹出的界面中点击+号选择刚刚拷贝到Reflector中的Reflexil插件的dll文件,如下图所示

Reflexil_Install3

然后点击Close ,此时程序的 Tools 栏目下已经有了 Reflexil 插件选项。

要反编译的示例项目

本文反编译一个Winform程序(当然,你也可以反编译.NET 的其他 dll 文件),程序如下所示:

Reflector Winform

代码

  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. InitializeComponent();
  6. }
  7. private void btnTest_Click(object sender, EventArgs e)
  8. {
  9. MessageBox.Show(“你好”);
  10. }
  11. }

我们把这个exe程序进行反编译吧

开始反编译工作

首先在Reflector工具栏中依次点击 Tools -> Reflexil 打开 Reflexil 的窗口,如下图所示

Open Reflexil

然后打开你要反编译的程序集,我们编译自己写的Winform的exe程序作为测试吧,如下图所示。

Reflector Winform2

然后我们选中我们要反编译的方法,在Reflexil插件中进行反编译,如下图所示。

Reflector Winform3

可以直接在“你好”的那一栏进行点击右键选择 “Edit” 进行直接的编辑

也可以在图中的这个选项卡( Instructions ) 中的表的任意一栏点击右键选择,如下图所示

Reflexil Edit

你可以直接Edit编辑单个文本,也可以Replace all with code... 编辑整个class的内容。

如果你选择的是Replace all with code... 来编辑整个内容的话,你需要在编辑完成后,在界面的左下角点击Complile 做编译操作。

但是似乎这个插件的编辑整个class的功能有缺陷,有些代码识别不出来。所以还是看情况使用吧,如果Replace all with code..不行,就直接选 Edit 编辑我们所选的内容即可。  我这里将“你好” 修改为 “你好,欢迎访问我的博客,www.wxzzz.com”。如下所示

Reflexil Edit2修改完成后,就万事俱备 只欠东风了。

最后一步操作,依次在Reflector项目中点击右键 -> 选择 Reflexil -> 选择 Save as..

保存即可,这样就完成了修改代码,编译成功。如图

Reflexil Save

然后就ok了,运行看看:

Reflector Result

其实很简单,只是我写的可能稍微太细了点儿。

哈哈,反正看图不看文字应该也可以直接结束这篇文章。

以下是我反编译之后的程序下载地址,你可以作为练习再次反编译:TestWinform.Patched

 

【转自】https://www.cnblogs.com/jackking/p/6165294.html

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

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

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


相关推荐

  • tabnine激活码(破解版激活)

    tabnine激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    48
  • rc522串口调试_单闭环直流调速系统实验报告

    rc522串口调试_单闭环直流调速系统实验报告RC522寻卡,防冲撞都可以,但是选卡失败是什么原因?欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程…

    2022年9月2日
    2
  • 阅读书源最新2020在线导入_【授人以渔】你想要阅读的,这里都有。「建议收藏」

    阅读书源最新2020在线导入_【授人以渔】你想要阅读的,这里都有。「建议收藏」今天给大家分享两个阅读软件,安卓、ios都有。通过订阅大佬们制作的书源(小说网站),80%你想看的小说,都能找到。(只要网络上有人分享上传了)﹀﹀﹀一、阅读(安卓)1、下载链接:https://www.coolapk.com/apk/io.legado.app.release2、食用方法:方法一(网络导入):  复制源URL,打开阅读”订阅”->点击右上角设置->选择”…

    2022年6月15日
    64
  • rebar3使用介绍(六)用户自定义文件配置

    rebar3使用介绍(六)用户自定义文件配置rebar3 使用介绍 五 用户自定义文件配置例子选项合并算法依赖和配置文件依赖永远按照 prod 模式对应的 profile 进行编译 不会有其他 当然不包括 default 任何东西会被额外的套用上来 即使它们是为 prod 依赖项配置的 仍然会将其提取到其声明的配置文件的配置文件目录中 例如 顶层的依赖关系 deps 将放在 build default lib 下 test 将放在 build test li

    2025年7月13日
    0
  • linux修改密码后登陆失败_linux取消root密码

    linux修改密码后登陆失败_linux取消root密码问题:当使用root修改密码时,报错passwd:Authenticationtokenmanipulationerror解决:1、查看是否权限问题,/etc/passwd/etc/shadow文件是否被锁住lsattr/etc/passwdlsattr/etc/shadow文件解锁:chattr-i/etc/passwdchattr-i/etc…

    2022年9月5日
    3
  • pytest fixtures_premier fixture

    pytest fixtures_premier fixturefixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月29日
    4

发表回复

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

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