Reflector有个File Disasmbler插件,让Reflector可以把反编译的代码保存为文件。通过反编译代码与源程序文件的比较,可以看出两者是有区别的,甚至编译的代码完全有可能无法再通过编译生成程序文件。

两者都有些什么区别呢?

一、文件的改变

源代码中我们创建一个Form1,VS 一般会生成两个文件Form1.cs 和 Form1.Desinger.cs,如果添加资源后还会增加一个Forms.resx文件,而反编译代码则把Form1.cs与partial代码Form1.Desinger.cs两者合而为一。

关于控件的申明与

private void InitializeComponent()

protected override void Dispose(bool disposing)

可以手动拆分还原,然后又可以实现在VS中进行窗体设计操作了。

二、代码的改变

我们看这样源文件这样一段代码

public class EventingList<T>: System.Collections.Generic.IList<T>
    {
        public enum EventType { Deleted, Added };

......

}

在反编译生成的代码中成了这样的形式:

public class EventingList<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable
    {

public enum EventType
        {
            public const EventingList<T>.EventType Added = EventingList<T>.EventType.Added;,
            public const EventingList<T>.EventType Deleted = EventingList<T>.EventType.Deleted;
        }

}

这是无法再通过编译的。

另反编译代码中还会添加很多非源代码的内容

[CompilerGenerated]
        private sealed class <GetEnumerator>d__0 : IEnumerator<T>, IEnumerator, IDisposable
        {
            private int <>1__state;
            private T <>2__current;
            public Set<T> <>4__this;
            public Dictionary<T, int>.Enumerator <>7__wrap2;
            public KeyValuePair<T, int> <kvp>5__1;

[DebuggerHidden]
            public <GetEnumerator>d__0(int <>1__state)
            {
                this.<>1__state = <>1__state;
            }

private bool MoveNext()
            {
                bool flag;
                try
                {
                    switch (this.<>1__state)
                    {
                        case 0:
                            this.<>1__state = -1;
                            this.<>7__wrap2 = this.<>4__this._values.GetEnumerator();
                            this.<>1__state = 1;
                            goto Label_007B;

根据提示信息是编译生成的,但编译是什么情况下又是怎么产生这些内容的有待进一步研究。

.Net Reflector反编译代码与源代码的区别相关推荐

  1. 弥补Reflector反编译对中文支持的不足

    Reflector是我目前用的最多的反编译工具,他可能不时最好的,但以它的更新速度,我相信他会成为最好的哦~~     国外的软件,对中文支持还是有问题,虽然我们都Unicode了,可是老外还是不一定 ...

  2. .NET Reflector Crack,用于探索和导航反编译代码

    .NET Reflector Crack,用于探索和导航反编译代码 .NET Reflector 可让您查看和调试您使用的所有 .NET 代码的源,从而节省时间并简化开发.通过您自己的代码.第三方组件 ...

  3. Reflector反编译winform心得

    Reflactor就不介绍了,.net下的免费反编译工具.Reflactor在某些情况下是很必须的,当遇到bug的时候,可以通过Reflactor看其内部的实现机制,从而找到真正的bug所在.或者可以 ...

  4. vue打包代码反编译_Android逆向反编译代码注入APK过程思路分析

    一.名称解释 逆向 - 是一种产品设计技术再现过程,从可运行的程序系统出发,运用解 密.反汇编.系统分析等多种计算机技术,对软件的结构.流程.算法. 代码等进行逆向拆解和分析,推导出软件产品的源代码. ...

  5. 将DEX反编译成Java源代码

    本文翻译自:decompiling DEX into Java sourcecode 如何将Android DEX(VM字节码)文件反编译成相应的Java源代码? #1楼 参考:https://sta ...

  6. android将彩图转为黑白_Android逆向反编译代码注入APK过程思路分析

    一.名称解释 逆向 - 是一种产品设计技术再现过程,从可运行的程序系统出发,运用解 密.反汇编.系统分析等多种计算机技术,对软件的结构.流程.算法. 代码等进行逆向拆解和分析,推导出软件产品的源代码. ...

  7. vs 2019 自带 反编译 与 Reflector 反编译工具比较

    都是一样的 但是要看自己写的 反编译代码 还是得去  Reflector 转载于:https://www.cnblogs.com/cjm123/p/10908910.html

  8. 反编译一之反编译代码

    JD-GUI反编译出来的源码不全,例如缺少静态方法,可以用jad.exe,能翻译个大概. 输入命令:jad -o -r -s java -d src org/*/.class 我解释一下这些参数的含义 ...

  9. 共享一个对Reflector 反编译支持中文的修正FileGenerator文件

    共享一个对Reflector 反编译支持中文的修正FileGenerator文件 文件生成插件 转载于:https://www.cnblogs.com/LifelongLearning/archive ...

最新文章

  1. UPC个人训练赛第十五场(AtCoder Grand Contest 031)
  2. python如何启动前端_Django项目创建到启动详解(最全最具体)
  3. 【吾悟】《易经》有感程序人生
  4. SDK目录结构和adb工具及命令介绍
  5. 有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?
  6. UVA11878 Homework Checker【文本】
  7. You have an error in your SQL syntax.....for the right syntax to use near 'describe
  8. python元祖用法_python中元组的用法整理
  9. C语言编写万年历程序
  10. Python制作表白爱心合集
  11. 【DeepLearning】【环境配置】Ubuntu 下手动调节 Nvidia 显卡风扇转速
  12. 小米路由器的服务器无响应怎么回事,小米路由器常见问题与解决方法(高级功能) | 192路由网...
  13. 如何在ESP8266中使用深度睡眠模式降低功耗
  14. 关闭电脑时提示有人远程使用计算机,关机时提示有人正在远程使用
  15. 《新亮剑》力求炮火逼真 柱子金钟负伤骨折_0
  16. 2021年G1工业锅炉司炉考试内容及G1工业锅炉司炉考试技巧
  17. [九度][何海涛] 斐波那契数列
  18. “另类”程序卸载有技巧
  19. 百度API实现人流量数量检测(动态)
  20. 特斯拉、蔚来们狂奔,宝马们不想成为“诺基亚”

热门文章

  1. 【测绘程序设计】——附合导线近似平差
  2. 国外安全网站、社区论坛、博客、公司、在线工具等整合收集
  3. 智慧城市建设的原则及规划目标
  4. Java数字签名校验
  5. hash % n 为什么等于 (n - 1) hash
  6. 新鲜出炉的京东面试题
  7. ubuntu 下code blocks 安装全过程
  8. ROS采集激光雷达点云数据
  9. Java打印个人基本信息
  10. linux 随机抽取文件中N行