net项目反编译

工具:De4Dot + IL SPY和Reflector结合使用

项目:vs10+创建解决方案,每个类库尽量按照dll名来命名,方便整合,新建web项目先把aspx等文件拷贝进去,注意:bin文件夹不用拷贝

一、没有混淆的代码

1.IL SPY反编译出来的代码相对干净

2.Reflector反编译代码里面容易出现goto等结构可读性差,还会加入较多的乱码代码

建议:IL SPY导出代码,往vs项目里拷贝,生成项目时报错文件可与Reflector反编译文件对比,方便排查错误。

二、有混淆的代码

先使用De4Dot进行反混淆,反混淆出来的dll在用IL SPY或Reflector进行反编译

  反混淆步骤:

  1.1打开 De4Dot 所在文件夹,按住 Shift,右键该文件夹 → 选择“在此处打开命令窗口”也可以打开“命令提示符”,再定位到 De4Dot 所在目录。

  1.2输入 De4Dot + 要反混淆 .net 文件,如输入 De4Dot G:\xx\xx.dll 回车,反混淆成功,在 G:\xx\目录下生成一个反混淆后的 xx-cleaned.dll 文件。

  1.3用 IL SPY或Reactor 打开 xx-cleaned.dll 文件源代码定义的变量和方法已经显示出来,说明反混淆成功。

三、项目整理

1.vs创建好类库项目已经web项目,根据各dll层级管理添加好项目引用,第三方dll放专门文件夹里,防止丢失方便查找引用。

2.混淆导出的代码拷贝到对应的类库,如:三层代码,先拷贝Model然后DAL最后BLL,拷贝完成一项生成对应类库(或生成解决方案,防止错误代码太多)

3.所有类库代码处理完成之后处理最为复杂的web项目里的反编译代码

  3.1、反编译出来的代码后缀为.cs,而项目里需要的文件是.aspx.cs,否则项目里的aspx文件与反编译出来的文件关联不起来

  3.2、批量替换文件名;在当前这个文件夹下面,先新建一个记事本,改后缀为bat,编辑ren *.cs  *.aspx.cs(注意*号前面为英文半角空格),保存后双击执行;在目录空白处右键刷新查看是否已经修改过来。

      如果替换错了(独立的类不要替换为aspx.cs)想要恢复.cs新建另一个bat文件内容填写

      @echo off
      Setlocal Enabledelayedexpansion
      set "str=.aspx"
      for /f "delims=" %%i in ('dir /b *.cs') do (
      set "var=%%i" & ren "%%i" "!var:%str%=!")

  温馨提醒:批量替换哪个文件夹下面的文件,就在对应文件夹根目录创建对应的bat文件(多个文件夹多个bat),跨文件夹批量替换暂未找到合适的方法,有熟悉的请告知,谢谢。

  3.3、把替换过的文件拷贝到web文件夹下(注意不要直接拖拽到vs里),切换到vs右键包含在项目中,aspx和aspx.cs文件就会自动关联;如果aspx文件与反编译出来的文件没有关联,排查aspx里的Codebehind和Inherits设置是否正确aspx.cs里命名空间,类名是否正确等,确保没有问题先把aspx和aspx.cs文件排除项目,在右键包含在项目中,一般情况下vs会自动把两个文件关联在一起。

  3.4、包含在项目中分批包含,等把错误提示都排查完,整个项目从反编译到项目整理基本也就完成了

四、记录

1.反编译需要耐心,要一点点排错,越复杂的项目越需要一步步处理,毕竟反编译完就可以用的项目很少。

2.多学习Reflector反编译,毕竟是用的比较多的,各搜索引擎解决方案文档等较全面

五、针对dll里想要修改部分代码直接再生成新的dll,这样的工具还没有找合适的,如果有熟悉的朋友,望留言告知。

NET项目反编译+VS解决方案整理流程的更多相关文章

  1. 一次.NET项目反编译的实战经验(WinForm)

    最近由于业务需求,需要对一个老项目进行功能调整.但是项目的源代码已经找不到了.所以只能尝试对项目行进反编译. 一.反编译工具的选择 提到.NET的反编译,第一个想到的就是大名鼎鼎的Reflector. ...

  2. java项目反编译获得源码

    经常能找到一些 过时的 项目源码,但是还是有研究价值的.但是肯定是不会给你源码的. 下面介绍怎么反编译: 1.在项目中找到classes这个文件夹,这个就是编译过的文件. 2.下载反编译工具JD-GU ...

  3. android 反编译 逆向工具整理

    需要准备的道具需要哪些软件会在后面逆向过程中详细介绍,这里先大致罗列一下 android一台root并安装了xposed框架的手机(主要是为了脱壳) 类似[海马玩]这种模拟器 android-kill ...

  4. 将JAR包反编译,修改后重新打包(转)

     将JAR包反编译,修改后重新打包(转)   在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...

  5. 转 C#反编译后的一些错误改正

    Xenocode反编译及代码整理记录1.Xenocode中设置输出数字为十进制 2.输出后中文文本为\uXXXX,可采用编码工具转成中文 3.new ()改成null; 4.反编译后代码中嵌套数组ne ...

  6. Jar包进行反编译,修改后重新打包

    在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用 ...

  7. java项目对jar包加密流程,防止反编译

    Java 开发语言以其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位.特别是近年来大数据.互联网+.云计算技术的不断发展,Java 开发语言 ...

  8. C#代码反编译 得到项目可运行源码

    C#代码反编译 得到项目可运行源码 摘自:http://www.cnblogs.com/know/archive/2011/03/15/1985026.html 谈到"C#代码反编译&quo ...

  9. Android 反编译技术流程

    为何需要反编译 作为一名Android开发者,很多的时候需要去学习别人优秀的代码,原本在GitHub上就有很多开源的项目代码,但有的时候在使用软件时候遇到自己想要的功能时,想要学习实现的代码时,这时候 ...

随机推荐

  1. JavaWeb学习—Servlet

    1.什么是Servlet Servlet是一个继承HttpServlet类的Java类 Servlet必须部署在web服务器端,用来处理客户端的请求 2.Servlet运行过程 Web Client ...

  2. javascript第八课匿名函数的使用

    window.onload=function(){ //当窗体载入完成之后执行方法里的内容 document.getElementById("html标签id").onclick= ...

  3. 最短路(dijskra+SPFA+Bellman)

    最短路 Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  4. 楼天城楼教主的acm心路历程(作为励志用)

    楼主个人博客:小杰博客 利用假期空暇之时,将这几年GCJ,ACM,TopCoder 參加的一些重要比赛作个 回顾.昨天是GCJ2006 的回顾,今天时间上更早一些吧,我如今还清晰记得3 年 前,我刚刚 ...

  5. FPGA开发(3)

    转载 榨干FPGA片上存储资源 记得Long long time ago,特权同学写过一篇简短的博文<M4K使用率>,文章中提到了Cyclone器件的内嵌存储块M4K的配置问题.文中提到了 ...

  6. source、sh、bash、./执行脚本的区别

    1.source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用 ...

  7. CEvent,CSemaphore,CCriticalSection,CMutex

    一.用CEvent实现线程同步 事件对象(Event)是最简单的同步对象,它包括有信号和无信号两种状态.在线程访问某一资源之前,也许需要等待某一事件的发生,这时用事件对象最合适.例如,只有在通信端口缓 ...

  8. 为什么析构函数要加visual?

    一般来说,有使用visual的类,其析构函数都需要加上visual,这是为什么呢? 因为使用多态时,一般都是由基类指针来使用派生类的,在删除这个派生类对象时也一样,由基类指针来调用, 可以想象,如果析 ...

  9. JS知识点摘记(一)

    JavaScript:基于对象和事件的脚本语言 特点: 安全性:不允许直接访问本地硬盘,可做的就是信息的动态交互 跨平台性:只要可以解析JS的浏览器就可执行,与平台无关 JavaScript与Java ...

  10. MyEclipse配色字体等配置的解决方案

    Myeclipse黑色配色方案(精心修改版) http://download.csdn.net/detail/rehongchen/6579945 如何改变Myeclipse编辑区背景色 http:/ ...