前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

C#代码反编译 得到项目可运行源码 经验分享(附:批量修改文件名工具)_雨枫技术教程网 【设为首页】【收藏本站】 雨枫技术教程网 高级搜索 TAG标签 网站地图 RSS订阅 首 页 JAVA WEB教程 JavaScript Unix/Linux 数据库 ERP PhotoShop 程序设计 软件工程 电脑网络 QQ专区 教程专题繁體中文 Struts JAVA基础 Spring JSF Hibernate JAVA网络 XML J2ME EJB Javamail 开发工具 Java高级 文件操作 Java视频 Android WEB调色 DivCSS教程 CSS布局实例 CSS教程 XHTML教程 Web标准教程 浏览器兼容教程 WEB工具 Html教程 建站技巧 JS教程 JS共享 Jquery Prototype Ajax ExtJs dojo 其它JS框架 网页特效 表单特效 JS手册 JS工具 Linux基础 Linux命令 Linux安装 Linux嵌入式 Linux编程 Linux管理 Linux内核 Linux桌面 Linux软件 BSD Redhat Linux ubuntu linux Solaris IBM AIX SCO unix Linux视频 MySQL SQL Server Oracle DB2 数据仓库 数据库理论 ERP咨询 OA ERP实施 ERP选型 ERP综合理论 信息化案例 信息化方案 ERP财务成本 ERP生产计划 ERP存货物流 ERP沙盘模拟 Dynamics AX CRM PS入门教程 PS合成教程 PS调色教程 PS抠图教程 PS照片处理教程 PS鼠绘教程 PS文字特效教程 PS签名溶图教程 PS动画制作教程 PS非主流教程 PS滤镜教程 PS创意设计教程 .net PHP C\C++\VC Visual Basic ASP ruby Java Shell Perl 测试技术 项目管理 CMMI/CMM SOA 构件与中间件 UML 软件架构 需求工程 分析与建模 配置管理 质量保证 软件过程 操作系统 服务器 网络技术 电脑应用 安全技术 软件应用 云计算 免费资源 本站公告:交流论坛繁體中文 搜索 智能模糊搜索 仅搜索标题 搜索 热门标签 Android教程 Windows 8 VS 2012 Windows 7 QQ 2013 Office 2012 嵌入式编程 Windows 2008 Java编程 非主流头像 .net编程 js特效 当前位置: 主页 > 程序设计 > .net > C# > C#代码反编译 得到项目可运行源码 经验分享(附:批量修改文件名工具) C#代码反编译 得到项目可运行源码 经验分享(附:批量修改文件名工具) 时间:2011-03-20 22:42 点击:687次 字体:[大 中 小] 谈到"C#代码反编译",大家可能都会想到 Reflector代码反编译工具,对其应该也不会太陌生;做C#开发,它算得上是一个不可或缺的实用工具。通过它我们可以很方便的查看一个程序集的源代码(这是其最基本的使用,也是大家常用的),还可以方便破解软件...,而我这篇文章要跟大家分享的是:用Reflector将C#的开发的软件[项目](此文中所说的是winForm项目,对于.net项目可以借鉴或参考)的项目代码还原&mdash;&mdash;反编译得到可运行项目源码。 我所做的反编译,并不是'破解',其使用的前提或情况是:公司原来请人开发的'配餐软件(幼儿园版)',现有客户咨询想买,并且软件中存在一些问题需改,&mdash;&mdash;不是本人开发的,该软件也无源码,想修改只能想办法得到软件的源码。具体的'破解'方法记录在下,方便自己以后查看!(ps: '破解'的方法,自己之前就摸索过。但困于反编译之后的error比较多,没有耐心,有的问题感觉比较离奇,试了几次不行就放弃了 &mdash;&mdash;这就间接的说明:真正的黑客,应该都是比较有耐心的,呵呵..., 但做软件开发,又何尝不需要这样?!) a.使用到的工具:Reflector,具体的说是:Reflector插件File disassembler(具体是什么和how to use,直接上网查)。 b. 打开Reflector,选择要'破解'的软件(.exe)主程序,再选择并点击 如图: , 在右侧出现的 程序集(输出)类型选择界面 选择类型'windows Appliction' (因为是winForm应用程序,如果是选择的其它 如'class ...'类库,则需要在之后的步骤中,改变项目属性中的 输出类型,不建议这样操作),如图: 点击 生成 即可 得到此主程序集的源码,其它的相关程序集再如此操作即可! &mdash;&mdash;不要以为大功告成,这只是第一步,麻烦的在后面! c.将生成的源码 在Vs中打开(项目), 先试着运行下,(一般)会报错,排除'xxx程序集不存在'这类的错误,我所遇到的如下: using System;using System.Collections.Generic;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;[CompilerGenerated]internal class <PrivateImplementationDetails>{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}{ internal static Dictionary<string, int> $$method0x600012e-1; internal static Dictionary<string, int> $$method0x6000137-1; internal static Dictionary<string, int> $$method0x6000137-2; internal static Dictionary<string, int> $$method0x600014a-1; internal static Dictionary<string, int> $$method0x6000169-1; internal static Dictionary<string, int> $$method0x60001b6-1; internal static __StaticArrayInitTypeSize=20 $$method0x6000213-1; // data size: 20 bytes internal static __StaticArrayInitTypeSize=20 $$method0x6000213-2; // data size: 20 bytes internal static __StaticArrayInitTypeSize=20 $$method0x6000213-3; // data size: 20 bytes internal static __StaticArrayInitTypeSize=20 $$method0x6000213-4; // data size: 20 bytes [StructLayout(LayoutKind.Explicit, Size=20, Pack=1)] private struct __StaticArrayInitTypeSize=20 { }} 源码文件中会出现一个 _PrivateImplementationDetails_{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}.cs 文件名很长 内容如上的 乱码类,对此解决办法时:注释此类 或直接删除。【程序相关的文件,如图片、数据库等要记得放到项目关联位置,一般在bin/debug/文件夹下】 d. 添加相关程序集的引用,设置启动对象。到这儿,差不多程序就可以 跑起来了,但是还没有完 &mdash;&mdash;因为 反编译后的代码,文件夹的位置和界面与资源引用之间的关联,基本上都乱了.所以现在要解决的关键问题是:恢复文件间的关联和引用(其它的问题,通过调试就差不多可以解决)。如图: 窗体的.cs和.resx(资源)文件不在同一个文件夹中,对应窗体的.resx文件都加上了项目或解决方案名前缀(zhiyiSystem.) &mdash;&mdash;This is point! 这就是我们要解决问题的关键:恢复窗体的.cs和.resx文件间的关联,操作大致有以下两步:1.将窗体的.cs和.resx文件放在同一个文件中&mdash;&mdash;即同一目录。2.去掉窗体的.resx文件的前缀 &mdash;&mdash;即修改文件名,如果是一个个文件去修改,窗体比较多的话,是一件非常重复而无聊的事,于是 就上网找 "批量修改文件名"的工具,下载了一两个感觉都不好用,找不到,只能自己搞了,再说这东西简单,说白了就是 遍历文件夹中文件并'重命名'(代码就不贴出了,文章后 附有 自己写的 "批量修改文件名"工具)。 到此,程序就可以真正跑起来了。别看我写出来,似乎'破解'就是一会儿的事,但我做的时候,却几经折腾 好几次都感觉"算了,又卡住了...",有些或大或小问题,在这里因为时间的原因 及有些步骤一时半会也想不起来了,但主要的方法应该都没有落下,如果有不明白的朋友,可以留言交流,再做解答;也希望在'破解'方法有经验的,能多提些意见,分享下你的&lsquo;破解&rsquo;经验! 后附: 批量修改文件名工具.rar 本文地址 : http://www.fengfly.com/plus/view-197294-1.html 标签: C# 代码反编译 上一篇:C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发 下一篇:c#开发snmp应用 ------分隔线---------------------------- 相关文章 C#的CLR组成和运转介绍 C#的Monitor和Lock介绍和对比 C#对象转Json序列化示例 C#实现二维码生成器 C#后台调用跨域MVC服务并实现Cookie验证 C#获取某年中第几个礼拜的第一天 C# Winform和Windows API实现剪贴板无缝自动保存器 C#的Delegate和Event介绍及区别 扩展C#的JavaScriptSerializer实现支持Camelcase属性名 C#的IDisposable和IEnumerable、IEnumerator详解 详解C#的Hashtable、Dictionary以及写入和读取对比 C#实现根据Windows进程名杀死进程 最新评论 查看所有评论 发表评论 查看所有评论 请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。 评价: 中立 好评 差评 表情: 验证码: 发表评论 本栏分类 Asp.net入门 Asp.net综合 .net入门 WF Silverlight WCF WPF LINQ ASP.NET MVC WinForm Visual Studio VB.net .net综合 sharepoint C# 热点文章 超级简单:将String转化成Stream,将Stream转换成String C#简单游戏外挂制作(以Warcraft Ⅲ为例) C#委托及事件 SerialPort 串口编程知识整理(一) C#开发ActiveX控件操作指南 ReportViewer(RDLC) 自定义表格打印,类似个人简历、病历表 C#在64位操作系统上连接Oracle的问题和解决方案 C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中 DataSet和DataTable详解 监控USB设备插拔 C#中使用Aspose.Word控件操作Word文档示例 C#操作excel(NPOI篇) C#判断字符串是否为日期格式 浅谈C#中常见的委托 C#导出Excel总结 最新文章 C#的CLR组成和运转介绍 C#的Monitor和Lock介绍和对比 C#对象转Json序列化示例 C#实现二维码生成器 C#后台调用跨域MVC服务并实现Cookie验证 C#获取某年中第几个礼拜的第一天 SharpGL(OpenGL)入门之纹理星球示例 C# Winform和Windows API实现剪贴板无缝自动保存器 C#的Delegate和Event介绍及区别 扩展C#的JavaScriptSerializer实现支持Camelcase属性名 C#的IDisposable和IEnumerable、IEnumerator详解 详解C#的Hashtable、Dictionary以及写入和读取对比 C#实现根据Windows进程名杀死进程 【CLR via C#问答】7、方法的相关问题 自定义Unity生存期模型PerCallContextLifeTimeManager实例 关于我们 | 联系我们 | 版权声明 | 网站地图 | 免责条款 | Copyright &copy; 2009-2014 FengFly.com . 雨枫技术教程网 版权所有 粤ICP备12074125号-3 Jiang Feng 2009.2 webmaster(at)fengfly.com QQ:185756667