NET项目反编译+VS解决方案整理流程
NET项目反编译+VS解决方案整理流程
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,这样的工具还没有找合适的,如果有熟悉的朋友,望留言告知。
作者:郑州 - 在路上
出处:http://www.cnblogs.com/oorz/
微信公众号:“专卓”;因为专业,所以卓越!可扫描左侧二维码关注。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: NET环境
相关文章
- 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
- .NET Windows API库(Cjwdev.WindowsApi)版本2.2发布
- C#.Net实体代码生成工具(EntitysCodeGenerate)的使用及.NET中的ORM实现
- 【ASP.NET】ADO.NET
- 《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View
- asp.net MVC 的处理流程
- ASP.NET中使用Entity Framework开发登陆注册Demo
- NET基础知识
- [ASP.NET Core 3框架揭秘]服务承载系统[5]: 承载服务启动流程[上篇]
- ASP.NET Core中的依赖注入(5):ServicePrvider实现揭秘【补充漏掉的细节】
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【总体设计 】
- 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)
- .NET中Flags枚举的使用
- 常见掌握类库与工具体系图 艾提拉总结 Atitit 文档资料处理重要类库与工具体系树 Configuration yml xml jsoup Net apache commons net
- Atitit ..Net Framework sdk 3.0 3.5 4.04.5 4.6 4.7 .net core版本新特性 v2 s22 1. 新特性来源于 down ms 官方网站1
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
- atitit. groupby linq的实现(1)-----linq框架选型 java .net php
- ASP.NET MVC - Internet 应用程序
- ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
- .Net——使用.net内置处理程序处理自己定义节点Demo
- Dynamsoft Dynamic .NET TWAIN for net Crack
- VB.net:VB.net编程语言学习之基于VS软件连接SQL Server(利用ADO.NET操作数据库/添加新数据源/DataGridView数据表格控件)的简介、案例应用之详细攻略
- ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
- 【.Net实用方法总结】 整理并总结.NET 中的 System.IO.Pipelines(管道)