本文由博主SunboyL原创,转载请注明出处:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html
    在Unity实际开发过程中,我们可能会用到大量的插件,而很多插件有可能并非开源,而是封装成dll文件。
    使用免费非开源插件时,插件往往缺少维护,这对我们的开发是非常不利的。例如dll暴露的诸多接口,我们并不知道这些接口背后干了什么、底层用到哪些接口、有什么使用上的潜规则、对性能影响如何。
 
    根据网上发现的网友统计(统计来源:http://www.xuanyusong.com/archives/2664),多数的dll没有做代码混淆、反逆向等工作。因此对于这类由IL生成的dll,我们可以直接使用现成的工具,对dll进行反编译,查看和学习dll内部到底干了些什么,是否存对性能产生影响的设计缺陷等等。
 
    目前已存在有很多的翻遍应工具,例如ILSpy、.Net Reflector 8、Resharper等等。
    下面我们使用免费开源的ILSpy为例,对UnityEngine.dll进行一次反编译学习。
 
下载工具:
    可以到ILSpy的官方网站进行下载:http://ilspy.net/
 
<声明:本文分享的是工具的简单使用方法,仅供学习参考使用,请勿用作其他用途>
使用:
1、打开ILSpy.exe,进入工具主界面:
 
2、点击工具菜单栏的<File - Open>进入文件浏览界面,在Unity安装路径中找到UnityEngine.dll并打开
 
3、反编译成功后,在左侧列表中将显示被反编译dll的层次列表内容,而右侧显示源码。
 
反编译后可以发现,UnityEngine.dll只是一个基于C#的包装层,因此我们看到的只是UnityEngine的包装代码以及一些比较基础的逻辑代码,核心代码并不在其中。
原因是Unity本身是由C++编写,即便要查看,也应该需要使用OllyDebug等其他反汇编工具深度逆向(这已经不是本文的讨论范畴),不能通过ILSpy这类IL反编译工具获得。
 
Edit by SunboyL

Unity-反编译由IL生成的DLL文件的更多相关文章

  1. 在VS2017上使用C#调用非托管C++生成的DLL文件(图文讲解)

    原文:在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就 ...

  2. 【转】在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

    原文:http://www.cyqdata.com/cnblogs/article-detail-35876# 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件 ...

  3. C++调用C#生成的DLL文件的各种问题

    C++调用C#生成的DLL文件: 首先选择建立一个C#的类库,然后再按照需求编写需要的函数 之后,对于C++调用过程需要注意的几点: 1.使用#using <....some.dll>指出 ...

  4. 在VS2010上使用C#调用非托管C++生成的DLL文件

    背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用 ...

  5. Android APK反编译得到Java源代码和资源文件

    在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件. 一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD- ...

  6. Android开发:APK的反编译(获取代码和资源文件)

    一.反编译工具: 1.APKTool: APKTool是由GOOGLE提供的APK编译工具,能够完成反编译及回编译apk的工作.同时,它也有着安装反编译系统apk所需要的framework-res框架 ...

  7. 反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏

    一.去除安卓应用标题栏 sencha touch打包android安装包,去掉标题栏titlebar的简单方法 (有更复杂更好的方法,参看"二.利用反编译修改apk的应用名称为中文" ...

  8. Visual Studio 2012网站如何只生成一个DLL文件

    简介: 在Visual Studio 2005,2008,2010版本中,都有Web Deployment工具将网站进行发布,所有代码文件和库文件发布,生成为一个动态链接库文件,而在Visual St ...

  9. 修改VS2010生成的dll文件中的内容

    我的电脑是64为的操作系统,所以先找到下面的路径 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 找到这个文件:ildasm.exe,如 ...

随机推荐

  1. C#编码习惯谈

    1.  避免将多个类放在一个文件里面.2.  一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面.3.  一个文件最好不要超过500行的代码(不包括机器产生的代码).4.  一个方法的 ...

  2. centos6.4安装GCC

    1. Last login: Mon Aug  4 11:46:15 2014 from 10.3.7.128 [jifeng@jifeng04 ~]$ ls hadoop  jdk1.7.0_45  ...

  3. 【LeetCode OJ】Merge Two Sorted Lists

    题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicin ...

  4. Failure to transfer org.springframework.boot:spring-boot-starter-parent:pom:2.0.1.RELEASE from https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempt

    第一次用 Spring Starter Project 创建一个Spring应用时,POM 文件报错: Project build error: Non-resolvable parent POM f ...

  5. Material Design系列第四篇——Defining Shadows and Clipping Views

    Defining Shadows and Clipping Views This lesson teaches you to Assign Elevation to Your Views Custom ...

  6. 【Mac】安装MAMP的PHPredis扩展

    1 下载phpredis扩展安装包 cd /usr/local git clone https://github.com/nicolasff/phpredis.git 2 依次执行以下操作完成安装 $ ...

  7. 计算完成率 SQL

    计算完成率 SQL ,), ,) ) AS XX_完成率

  8. SQL Server设置登录验证模式

    我们在安装SQL Server的时候可以设置“混合验证模式”,既可以使用windows身份验证登录,也可以使用SQL Server身份验证登录. 如果我们在安装的时候并未设置"混合验证模式& ...

  9. 题目1454:Piggy-Bank(完全背包问题)

    题目链接:http://ac.jobdu.com/problem.php?pid=1454 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  10. LeetCode 78 Subsets (所有子集)

    题目链接:https://leetcode.com/problems/subsets/#/description   给出一个数组,数组中的元素各不相同,找到该集合的所有子集(包括空集和本身) 举例说 ...