转自http://www.cnblogs.com/wuliangbo

Reflector for .NET 下载地址:http://www.aisto.com/roeder/dotnet/

Reflector.FileDisassembler.dll cs文件的工具下载地址 : http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip

1.下载Reflector.FileDisassembler.zip,解压后得到一些文件,其中Reflector.FileDisassembler.dll是已经编译好的,其它是它源码;

2.打开Reflector,在view菜单下的Add-Ins,将Reflector.FileDisassembler.dll添加到里面;

3.open一个dll,exe,或mcl为后缀的文件,当然要支持.net的

4.选择要反编译的dll(会在列表中显示),选择Tools->File Disassembler,在右窗口会出现设置存放源码位置的路径,点击产生就可以了!

但是使用FileDisassembler编译成CS文件会有一个Bug, 就是变量、类和名称空间有时会重命名。

幸好FileDisassembler发布的时候带有源代码,也就省得去Reflect一把了,毕竟机器生成的临时变量名看起来还是很不爽的。修复这个bug很简单,修改了一下CreateFile方法,同时添加了一个GetUniqueFileName方法,源代码如下:

private StreamWriter CreateFile(string directory, string fileName) 

    directory = directory.Replace("<", "_"); 
    directory = directory.Replace(">", "_"); 
    directory = directory.Replace(":", "_"); 
    directory = directory.Replace("|", "_"); 
    directory = directory.Replace("?", "_"); 
    directory = directory.Replace("*", "_"); 
    directory = Path.Combine(this.outputDirectory, directory); 
 
    ILanguage language = this.LanguageManager.ActiveLanguage; 
    string fileExtension = language.FileExtension; 
 
    fileName = fileName.Replace("<", "_"); 
    fileName = fileName.Replace(">", "_"); 
    fileName = fileName.Replace(":", "_"); 
    fileName = fileName.Replace("|", "_"); 
    fileName = fileName.Replace("?", "_"); 
    fileName = fileName.Replace("*", "_"); 
    fileName = Path.Combine(directory, fileName); 
    fileName = Path.ChangeExtension(fileName, fileExtension); 
 
    fileName = GetUniqueFileName(fileName); 
    this.WriteLine(fileName); 
 
    directory = fileName.Substring(0, fileName.LastIndexOf('""')); 
    if (!Directory.Exists(directory)) 
    { 
        Directory.CreateDirectory(directory); 
    } 
 
    StreamWriter writer = new StreamWriter(fileName); 
    return writer; 

 
private Hashtable fileNames = new Hashtable(); 
 
private string GetUniqueFileName(string fileName) 

    string strExtension = Path.GetExtension(fileName); 
    fileName = fileName.Replace(strExtension, ""); 
 
    string _fileName = fileName.ToLower(); 
    bool bFirstRename = true; 
    while(fileNames.Contains(_fileName)) 
    { 
        string existFileName = (string)fileNames[_fileName]; 
        string [] efnParts = existFileName.Split(new char[] { '""' }); 
        string [] fnParts = fileName.Split(new char[] { '""' }); 
        for (int i = 0; i < fnParts.Length; ++i) 
        { 
            if (efnParts[i] != fnParts[i]) 
            { 
                if (bFirstRename) 
                { 
                    fnParts[i] += '_'; 
                    bFirstRename = false; 
                } 
                fnParts[i] += 'x'; 
                break; 
            } 
        } 
        fileName = string.Empty; 
        for (int i = 0; i < fnParts.Length; ++i) 
        { 
            fileName += '""' + fnParts[i]; 
        } 
        fileName = fileName.Substring(1); 
        _fileName = fileName.ToLower(); 
    } 
    fileNames[_fileName] = fileName; 
    return fileName + strExtension; 
}

转载于:https://www.cnblogs.com/ceci/archive/2009/08/21/1551703.html

使用Reflector.FileDisassembler反编译DLL相关推荐

  1. [C#反编译教程]001.Reflector.NET反编译工具 v8.5绿色版+注册机+注册教程

    截图 下载地址 Reflector.NET反编译工具 v8.5绿色版+注册机 下载地址:http://pan.baidu.com/s/1mgN1Cpi 密码:mx19 简介 .NET Reflecto ...

  2. 反编译DLL并修改DLL中的内容

    使用场景:针对当前用户因不愿意进行软件版本升级,但又希望可以解决当前问题,此时可以考虑通过反编辑DLL进行修改内容,然后重新生成新的DLL 操作步骤: 1.首先使用ILSpy.exe反编译DLL,查看 ...

  3. NX二次开发-C++使用IDA Pro反编译dll,追踪查看里面使用的UFUN API函数(三部曲1)

    一年前我写过一个C#反编译dll查看代码系列 NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数(三部曲1) NX二次开发- ...

  4. Unity3d 反编译破解游戏 简单示例 使用ildasm反编译DLL修改然后重新编译DLL

    因为这几天碰到一个Unity的Bug,不得不去反编译DLL看看C#代码的生成中间件代码.这也用到了一些反编译以及重新编译DLL的一些知识,意味到Unity是如此的不安全. 首先我们新建一个工程,创建一 ...

  5. 使用反编译工具反编译Dll,编译成C#

    今天刚刚开通博客,就迫不及待把今天遇到的一个问题写出来分享,呵呵! 这几天我需要对dll进行反编译,下面是我的步骤, 1 . 单击 http://xiazai.xiazaiba.com/Soft/R/ ...

  6. 反编译DLL并修改再生成DLL

    一. 用到的工具: 1:反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了: 2:微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了:可以在C:\Pro ...

  7. 新生替代Reflector的反编译软件ILSpy

    做个记号 http://wiki.sharpdevelop.net/ilspy.ashx Reflector 7以后收费了,中文支持还不好 转载于:https://www.cnblogs.com/ja ...

  8. 用Reflector和FileDisassembler配合反编译.net Windows程序

    用FileDisassembler反编译Windows Application出现了问题,resx资源文件和cs文件不匹配,项目编译根本通不过,把resx文件修改放入cs文件夹后,虽然运行没有 问题, ...

  9. .dll反编译工具Reflector的使用

    这个软件经常更新,可以在本词条提供的扩展阅读提供的链接中下载最新的版本. 默认情况下,Reflector会打开一组公共程序集(mscorlib.System.System.Data.System.Dr ...

最新文章

  1. 想做数据分析?这个比赛适合你!
  2. Hibernate Shards 数据的水平、垂直切割(二)- Hibernate Shards基本演示
  3. Python网络编程2:创建套接字和套接字对象的内建方法
  4. 详解python正则\b和\B的区别
  5. vue 页面A转到页面B,B页面停留在A页面的滚动位置
  6. java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式
  7. make找不到linux内核函数,linux内核make menuconfig出错
  8. 【转】Win2008 r2 远程桌面授权已过期的解决办法
  9. python解析html的库_python解析html开发库pyquery使用方法
  10. 新产品Wyn Enterprise 详解,立即预约公开课
  11. html语言中div的用法,htmldiv标签怎么用
  12. multisim安装后无法连接数据库_Kepserver连接Mysql教程(一)MySQL5.5数据库安装
  13. linux根据端口号查询项目路径
  14. win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
  15. 数据挖掘第三版课后习题
  16. django jwt token 令牌
  17. SpringBoot整合Dubbo
  18. python北京房价预测_Python爬虫告诉你北京房价有多高
  19. 深入理解 Laravel Eloquent(一)——基本概念及用法
  20. 数据库结构与算法基础

热门文章

  1. 题解-BOI 2004 Sequence
  2. 6.2 常见多媒体标准及压缩技术
  3. windows下安装zabbix_agent
  4. Label 表达式绑定
  5. 通过Ajax解析和jQuery写了一个小小的导航条
  6. 状态管理工具vuex的基本使用(vuebus的理解)
  7. MFC的sendmessage和postmessage 以及sendmessagetimeout
  8. Vue 从入门到进阶之路(十四)
  9. Highcharts 配置选项详细说明
  10. 最近阅读20171106