教你使用 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文件而已),如下图所示

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

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

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

要反编译的示例项目

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

代码

  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 的窗口,如下图所示

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

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

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

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

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

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

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

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

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

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

然后就ok了,运行看看:

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

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

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

时间: 2024-11-26 23:56:28

教你使用 Reflexil 反编译.NET的相关文章

Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

前段时间在 Android play 上看到一个非常牛逼的 3D 动态天气预报,效果真的非常炫.二话不说动手 dex2jar.bat/apktool 发现这并没 有什么卵用,在核心的地方看见 native 字段果断放弃了治疗,立刻转向 so 的逆向project.发现了cocos2dx so 引擎,搜噶.我就说 嘛这么炫酷的效果, Android 源代码是做不了的.即使达到了这样的程度,预计性能也特别不好.由于那个动态效果是不会循环播放 的,也就是不会反复.是自己绘制的依据资源文件,在反编译的

教你如何正确反编译apk

本篇博文简单得以图文形式,描述下反编译apk. 一听反编译,有木有高大上的赶脚,哈哈,其实真的不是很难嘻嘻 简单的说下反编译apk的流程: 我们一般想要反编译一个apk,无非就是想获得三样东西 图片资源 ,XML资源,和代码资源 一.图片资源获取. 这个最简单啦, 首先准备一个apk,嘿嘿就是你啦 这里是一个.apk后缀的文件,我们先把后缀改成,zip, 然后就成了这样 化身压缩文件啦撒,然后打开后你就能看到如下图 从压缩文件里解析出来的有很多目录撒,有大家熟悉的res目录,还有一个待会着重介绍

unity 反编译 step2 dll -->reflector

NET Reflector反编译使用经验 不少人.net开发人员看见别人写的程序很棒都想知道别人是怎么写的,想借鉴,今天手把手教大家如何实现反编译出源码,下面通过Reflector小软件演示. 工具/原料 windows系统 Reflector软件 方法/步骤 1 下载安装Reflector,安装好后,如下图所示.这个也有免安装版的. 2 运行软件,会出现如下界面,如下图: 3 选择file中的open Assembly,这个表示打开选择你需要反编译的程序,如下图红色框标示: 4 选择你需要反编

教你如何动态调试 iOS App(反编译App)

教你如何动态调试 iOS App(反编译App) 开篇 通过本文你能了解 iOS 逆向的基本知识,对 iOS App 的安全有一定了解.然后能举一反三,在自家 App 找到危险漏洞加以预防,保证用户数据安全. 在安全领域,攻与防永远存在.哪怕是 iPhone 有着强大的安全防护机制,也挡不住那些极客们一次又一次的好奇,开发了很多强大且便利的工具.本文就是在这些极客们提供的工具的基础上完成的! 准备工具 Mac 电脑和越狱 iPhone 手机 查看手机系统目录工具 iFunbox 或 iTools

手把手教你反编译别人的app

虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的"安全". 这里只最简单的结论给大家,具体原理以及工具的详细使用,请各位自行Google,为什么这么做呢,因为我想用最简单的语言,让没有汇编基础的同学也能明白. 将用以下几个方面来阐述我的观点: iOS app可以"有条件"地被反编译 脱掉App Store给"二

Android Proguard安全加固教你如何让自己的应用程序或SDK更难被反编译--library打包成jar并且混淆

在android 应用层开发的时候咱们技术人员都或多或少都会接触一些SDK比如so.jar等,这些都是数据类公司提供给互联网开发公司的关于技术核心类 方便的东西,因为是核心所以加密加固是必不可少的工作,本博今天就向大家介绍jar的封装打包以及混淆,完成自己的SDK!在此之前需要给大家说 说so,so是由C/C++语言编译而来,其反编译难度更大,因为反编译之后就是汇编语言,需要懂汇编才能看懂,更重要的是即使懂汇编把其复原也是相 当大的工程,尤其是一些大公司的SDK,那就更别说了,而jar呢反编译的

教你如何反编译app,拿到加密方式

大家知道app 有安卓和ios 安卓是apk 现在基本上apk都是经过加密的 想动态脱壳没一定的技术是搞不定的 IOS是ipa 今天我主要讲的是这个 准备好反编译设备 1.一套越狱的ios手机 我的设备是iphone6 ios8.3 已越狱 2.一个mac系统 可以是vmware上的mac 黑苹果 或者直接用自己的mac电脑 我为了方便就用了黑苹果(如何搞黑苹果可以看我之前发表的博客) 给大家看下我的环境吧: 准备反编译环境 1. 越狱手机上 1.1 Cydia上面安装 OpenSSH 安装成功

教你快速高效接入SDK——打包工具的实现(反编译资源动态整合打渠道包)

整套u8sdk的核心思想,就是让我们的SDK接入成本,能够控制在1,而不是N.啥意思呢?就是,我开发第一款游戏的时候,我接了这些SDK,当我开发第二款,第三款游戏的时候,这套SDK可以尽可能的复用,而不是每开发一款游戏,又从头去接各个渠道sdk.所有的游戏都能够使用同一套SDK接入框架,来快速完成SDK的接入工作.那么,在U8SDK里,我们怎么做到呢?请看我们总体的思路: 游戏A,游戏B,游戏C是三款不同的游戏,对于他们来说,他们只需要调用U8SDK抽象层提供的接口,就完成了所有SDK的接入工作

手把手教你搞懂 Android 反编译

我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一个是对代码反编译,也就是java文件的反编译. 一个是对资源反编译,也就是res文件的反编译. 所需的工具 Android Studio:安卓开发IDE下载地址:https://developer.android.com/studio/index.html 反编译代码的工具: dex2jar: 把dex文件转成j