相关情况介绍:
以下文字来自
from: http://blog.tripdev.com/?tid=81
Reflactor就不介绍了,.net下的免费反编译工具。Reflactor在某些情况下是很必须的,当遇到bug的时候,可以通过Reflactor看其内部的实现机制,从而找到真正的bug所在。或者可以通过reflactor查看私有生成,然后在用反射去调用。
上面说的都是正当用途,有的时候也可以用来反编译别人的软件。混淆了的软件,我就不管了。这里要讲的是没有混淆和加密的软件的反编译。reflector的右键菜单中的export就能做到反编译,如下图。
反编译的文件默认保存在My Documents\Reflector\Disassembler下,但是这个反编译有一些问题,对于winform的资源文件无法反编译。这就需要我们另寻他法。
经过我的不懈努力找到了一个插件File dessassemble,他能实现这样的功能。
反编译出来后,用visual sutio打开后就能编辑了,但是有时候会有一些问题。下面总结一下。
1、编译没有问题,运行出现“类型初始值设定项引发异常”
这主要是在类中使用了两个静态变量,而其中一个静态变量的初始化依赖令一个静态变量,而被依赖的静态变量放在依赖变量的前面,比如下面的代码就会出现这样的问题。
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1privatestaticstringSettingFileName=Path.Combine(SettingFolderPath,@"GoogleMusicDesktop\config.xml");
2publicstaticstringSettingFolderPath=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"aaaSoft");
问题很好解决,掉个个就解决了。
2、出现无法找到资源文件,如图片等
这种情况一般是和资源文件的命名如果,请把资源文件命名保持和类一直,重新编译一下就会解决问题,注意需要重新生成,否则就不一定好使了。
3、打开form的时候出现错误
这个问题,我通过搜索解决了,园子里有一篇文章,我转过来。
转载文章
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->用Reflector和FileDisassembler配合反编译.netWindows程序
URL:http://www.cnblogs.com/verygis/archive/2008/12/02/1346072.html
用FileDisassembler反编译WindowsApplication出现了问题,resx资源文件和cs文件不匹配,项目编译根本通不过,把resx文件修改放入cs文件夹后,虽然运行没有
问题,但是不能直接在窗体设计里面"可视地"修改控件,一来麻烦,二来不直观,那么就应该修改下源代码,使其符合VS2008的源文件布局.
下面总结一下修改的步骤:
1.由于FileDisassembler会给每个命名空间生成一个目录,保存这个空间的源代码,而对于资源resx文件就是直接加在项目目录下,所有要把它放回源码目录下.例如
对于项目文件夹里面的TryAssemb.Form1.resx,首先改为Form1.resx然后移动到TryAssemb目录里面.
2.然后对窗体打开"视图设计器",发现会出现下面的错误:
修改方法就是对所有System.Windows.Forms.命名空间里面的控件需要全命名空间的声明,例如里面base.AutoScaleMode=AutoScaleMode.Font;就要改成base.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;而TextBoxtextBox1;也要改成privateSystem.Windows.Forms.TextBoxtextBox1;这样VS2008就能识别到这个控件是要绘制在Form上面的.
PS.开始是的时候还以为要像VS一样把Form1拆开成Form1.cs和Form1.Designer.cs.每次是都辛辛苦苦拆开,最后才发现原来根本不需要,^_^.
相信大多数.Net程序员都有使用Reflactor的经历。无论出于什么目的,当用Reflactor反编译托管程序后,还想对其代码加以修改,那么本文所列举的可能是一份有用的参考。
用Reflactor的FileGenerator插件反编译代码后可以得到包括项目文件的源代码,但代码中存在各种问题,一般无法一次编译通过,以下将详谈这些问题:
枚举问题
为了代码可读,可能需要花点时间查阅metadata把int值修改回枚举值,尤其是想利用窗体设计器的,VS2008可能还不理解int值。
属性问题
比如一个叫Names的属性被反编译后,可能还原为的set_Names(names),get_Names()方法,逐个替换可能很慢,可采用正则表达式整体替换。
对于set_Xxx(xxx)方法,可替换
set_{[a-z]*}\(
为
\1=(
对于get_Xxx()方法,可替换
get_{[a-z]*}\(\)
为
\1
然后,再修复个别被误换的方法。
委托和回调函数问题
一般会被还原为add_Xxx(MethodsName)方法,需要改为+=MethodsName
资源问题
需要使用.NetFrameworkSDK下的resgen.exe工具,反编译嵌入资源文件*.resources为*.resx文件,
语法为:ResGen.exe*.resources*.resx,然后将*.resx包含入项目,就会自动和同名的窗体文件*.cs关联,如果没有关联可采用先排除再添加大法,一一搞定。
命名空间问题
如果需要切换到IDE的窗体设计器,而不出错,则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。
窗体设计器识别问题
需要把以下代码
ComponentResourceManagermanager=newComponentResourceManager(typeof(ClassName));
替换为
System.ComponentModel.ComponentResourceManagerresources=newSystem.ComponentModel.ComponentResourceManager(typeof(ClassName));
窗体设计器才能正常识别。
fm: http://blog.csdn.net/ma_ta/archive/2008/12/11/3497532.aspx
分享到:
相关推荐
Reflector反编译WinForm程序后,可以得到csproj项目源码。但其中的窗体Form类无法在Visual Studio中直接打开进行界面设计,同时resources资源文件也无法被Visual Studio设计器识别。本程序可一键自动进行转换修复,...
Reflector.exe反编译.NET WinForm代码后,窗体资源文件,都被生成:***.resources 用ResgenTool.exe可以把***.resources 转换为 ***.resx, ================== 反编译.NET WinForm步骤: 1. 使用Reflector.exe导出...
Reflector反编译WinForm程序后,可以得到csproj项目源码。 但其中的窗体Form类无法在Visual Studio中直接打开进行界面设计,同时resources资源文件也无法被Visual Studio设计器识别。 本程序可一键自动进行转换...
.NET Reflector 反编译项目修复方法 .NET Reflector 是一个强大的反编译工具,可以将已编译的 .NET 项目反编译回源代码,但是反编译后的项目可能会存在一些错误,需要对其进行修复。本文将介绍如何修复反编译后的 ...
例如,`.NETdll反编译`工具,它可能是像ILSpy、JetBrains DotPeek或Reflector这样的知名反编译器。这些工具能够将DLL文件的中间语言(IL,Intermediate Language)转换回易于理解的C#源代码,帮助开发者分析以下内容...
也是大家常用的),还可以方便破解软件...,而我这篇文章要跟大家分享的是:用Reflector将C#的开发的软件[项目](此文中所说的是winForm项目,对于.net项目可以借鉴或参考)的项目代码还原——反编译得到可运行项目源码...
C#反编译资源文件修复工具ILSpy Reflector resgen批量resources转换resx工具 ILSpy反编译后,Winform窗体中的resx文件全部变成了resources,为了方便查看代码,得把这些转回来,这个工具批量转换非常方便
Reflector反编译WinForm程序后,可以得到csproj项目源码,但其中的窗体Form类无法在Visual Studio中直接打开进行界面设计,同时resources资源文件也无法被Visual Studio设计器识别 正隆WinFormCS,可一键自动进行...
反编译工具有多种,例如ILSpy、dotPeek、Reflector等。这些工具不仅能够反编译C#代码,还能处理其他.NET语言,如VB.NET。它们通常支持查看元数据、解码IL(中间语言)代码,并提供一定的重构功能。在使用反编译工具...
通过反编译工具(如ILSpy或Reflector)也可以查看源代码,进一步理解WinForm应用的工作原理和实现细节。 总的来说,WinForm界面开发实例是一个很好的起点,它将帮助初学者掌握.NET框架下的桌面应用开发,理解控件...
6. **反汇编视图**:对于那些不能完全反编译为源代码的部分,Reflector提供反汇编视图,展示底层的机器指令。 尽管Reflector能提供源代码级别的视图,但需要注意的是,反编译出的代码可能与原始源代码有所不同,...
在分析或学习这个项目时,我们可以打开这个文件以查看程序的结构,或者反编译来看看它是如何实现各种功能的,例如,通过Reflector或ILSpy等工具可以深入理解代码逻辑。 总结来说,"iNotepad"是一个基于Windows ...
- 如果外部exe是一个WinForm应用,可以通过反编译工具(如ILSpy或Reflector)查看其窗体类,然后在项目中创建一个对应的窗体类。 2. **调用外部exe作为子窗体** - 使用`System.Diagnostics.Process`类来启动和...
本文反编译一个Winform程序(当然,你也可以反编译.NET 的其他 dll 文件),程序如下所示: 图 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private...
512M内存,一台很过时的本本),本程序是用C#.net WINFORM开发,您可以用Reflector等反编译工具反编译源代码,本程序是我在做一个9个子系统的网站时,写文档和对比不同版本文件时开发的,水平一般呵呵能用就行 ...
由于.NET框架的开放性,有许多工具如Reflector或ILSpy可以轻易地反编译这些文件,暴露源代码。因此,对.NET程序进行加密显得尤为必要。 一种常见的加密方式是混淆(Obfuscation),它通过对代码进行重命名、打乱...
在C#环境下,由于.NET框架的特性,编译后的DLL和EXE文件实际上是可读的中间语言(IL),通过反编译工具如ILSpy或Reflector,很容易查看到原始的代码逻辑。因此,对这些文件进行加密显得尤为必要。 接下来,我们探讨...
首先,使用反编译工具Reflector对水晶报表的DLL文件进行反编译,找到负责打印参数设置的代码段。在代码中,可以看到一段用于构造打印参数字符串的逻辑,其中包含了对打印方向的设定。关键的代码片段如下: ```...
如果遇到问题,检查错误代码或日志,或者尝试使用工具如`ildasm`或`Reflector`反编译VB.NET库以获取更多函数细节。 8. **文档和示例**: `使用说明.txt`文件可能包含关于如何使用`EDSockServer.dll`的重要信息,...
如果你有这个文件,可以对其进行反编译(如使用ILSpy或Reflector)来查看具体的C#代码,学习如何实现记事本的功能。 总结来说,C#语言编写记事本程序是一个很好的学习实践项目,它涵盖了面向对象编程、事件驱动、...