反编译是我们理解.NET内部实现的一种良好的手段。

程序编译时

Test.exe是IL代码。我们可以通过一些工具,来查看这些IL代码。

一模一样?

理论上来说,一模一样的反编译是不存在的。原因有以下3点:

1. 注释不通过编译程序,自然木有注释。

2. .NET编译器会做一些优化,例如 int i= 5+6 ; 编译时直接表述成 i=11了、无用变量直接过滤。

(i=5+6这种方式写代码不是没有必要的,有些时候,例如文件操作中定义文件大小,我们经常为了可读性,写成(7*1024*1024*...)  的这种方式。)

3. .NET为了“Csharp Syntactic sugar”语法糖的概念,打造易用的平台,经常会在语法上做一些简化。这种简化只是在编写时简单一些,而编译时照旧是正常方式。

但是终归是能通过“蛛丝马迹”看出一些端倪。(是不是有反编译工具我们得代码就谁都能看了呢?放心,去搜搜代码混淆器吧。)

推荐几个反编译工具。

1.Reflector     老品牌,各方面表现 不错。唯一闹心的是,新版本已经收费了。

2.ILSpy    相对来说,各方面表现照 Reflector差那么一点, 但是是开源的项目。0元包邮哦亲。

下载地址:

1)Reflector

下载地址1:http://www.xiazaiba.com/html/5268.html

下载地址2:http://www.downxia.com/downinfo/35185.html

2)ILSpy

下载地址1:http://www.orsoon.com/Soft/14703.html

下载地址2:http://ilspy.net/

介绍一点.NET反编译的知识的更多相关文章

  1. 转:介绍几个著名的实用的Java反编译工具,提供下载

    from :http://www.glorze.com/219.html 反编译 众所周知,我们将源代码进行编译,生成可执行的程序或者容器发布包,这个将代码转换的过程就是编译的过程,而反编译就是将这些 ...

  2. WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

    念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String ...

  3. MyEclipse反编译Class文件

    对于需要查看Java Class文件源码的筒子们来说,必须在项目中导入Java源码才能查看Class文件的具体实现,这不仅十分的麻烦,因为有时我们并不可以获得Class文件对应的Java源码.今天就给 ...

  4. Android实践--apk反编译

    版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/ysjian_pingcx/article/details/25468867 Android apk反编译一 ...

  5. 实例具体解释:反编译Android APK,改动字节码后再回编译成APK

    本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能 ...

  6. 后端开发工具:反编译工具、VS插件、.NET Framework源码地址

    再学习.工作中,开发免不了要使用第三方工具.今天介绍2款反编译工具 一.dnspy 免安装.免费.可调试.可修改重新编译dll 开源项目地址:https://github.com/0xd4d/dnSp ...

  7. Android反编译与防止反编译

    1.Android反编译      1)下载两个工具  dex2jar,jar2java,相关阅读下载见:http://www.linuxidc.com/Linux/2011-02/32775.htm ...

  8. Java 7 中的Switch 谈 Java版本更新和反编译知识

    Java 7 中的Switch 谈 Java版本更新和反编译知识          学习编程,享受生活,大家好,我是追寻梦的飞飞.今天主要讲述的是Java7中的更新Switch实现内部原理和JAD反编 ...

  9. APK反编译之一:基础知识—APK、Dalvik字节码和smali文件

    refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ...

随机推荐

  1. rpm 与压缩解压缩

    rpm包redhat package manager 逐渐地被linux发行版本使用的安装包 rpm -qa 查询所有linux中安装了那些rpm包 rpm -q mysql 查看mysql 包的信息 ...

  2. Java中Filter、Servlet、Listener的学习

    1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个reques ...

  3. Windows XP下安装和配置Apache2.2.22服务器+PHP5+Mysql5

    原文:http://www.chinaz.com/web/2012/0516/252021.shtml 随着PHP网站的流行,国内越来越多的站长使用php开发网站或者使用相关的php开源网站(例如:D ...

  4. border-radius 样式表CSS3圆角属性

    border-radius 是CSS3圆角属性,用来实现DIV层的4个边框画成圆角. 一.语法: border-radius : none | <length>{1,4} [/ <l ...

  5. "undefined reference to" 问题解决方法 -链接问题

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

  6. 织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

    在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} 可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名 ...

  7. Java SE 第二十二讲----接口interface

    1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...

  8. [ACDream 1430]SETI 后缀数组

    题目链接:http://acdream.info/problem?pid=1430 题目大意:给你一个长度不超过10000的字符串,问你出现过两次或两次以上的不重叠的子串有多少个. 后缀数组计算出he ...

  9. struts2+hibernate+poi导出Excel实例

    本实例通过struts2+hibernate+poi实现导出数据导入到Excel的功能 用到的jar包: poi 下载地址:http://poi.apache.org/ 根据查询条件的选择显示相应数据 ...

  10. 菜鸟-手把手教你把Acegi应用到实际项目中(3)

    这一节我们将要了解的是AnonymousProcessingFilter.RememberMeProcessingFilter和LogoutFilter三个过滤器. 1.AnonymousProces ...