Reflector反编译WinForm程序重建项目资源和本地资源
工具:vs2012、.NET Reflector8.1.0.35
要解决的问题:
通过Reflector反编译生成的代码可以编译通过并显示窗体的本地资源和项目资源图片
一、测试项目
两个图片分别放在项目资源和窗体的本地资源里

项目资源文件:
<data name="Chrysanthemum" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Chrysanthemum.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="资源" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\资源.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
</data>
本地资源文件:
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB/+EO5kV4aWYAAE1NACoAAAAIAAQBMgAC
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
</value>
二、Reflector 反编译

在.resources文件上点击右键=》open with=》vs2012 ,就可以在vs里查看资源文件,同时在C:\Reflector\Exports目录下生成.resx文件,如:
C:\Reflector\Exports\ResxDemo.Form1.resources.resx
也可以使用resgen命令生成resx文件

选择ResxDemo项目导出源码在vs2012中打开,这时一般可以编译通过,并能运行。但是打开窗体编辑时会出现错误,提示找不到资源。
反编译后的项目和原项目对比有几点不同:
1. 原项目\Properties\Resources.resx 资源文件没有了,在项目根目录下多出来一个ResxDemo.Properties.Resources.resources文件
2.原项目Form1.resx和Form2.resx资源文件没有了,多出两个.resources文件
3.原项目中有个Resources文件夹存放项目资源的图片,反编译后这个文件夹没有了
4.原项目文件.csproj中资源引用方式是这样的
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form2.resx">
<DependentUpon>Form2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
反编译后的是这样的
<EmbeddedResource Include="ResxDemo.Form1.resources" />
<EmbeddedResource Include="ResxDemo.Form2.resources" />
<EmbeddedResource Include="ResxDemo.Properties.Resources.resources" />
*.resx文件时xml格式的资源描述文件,*.resources文件是编译后的二进制资源文件。
可以运行并显示图片是因为运行时从.resources文件中提取资源,但设计时不能读取二进制文件,所以报下面这样的错误。
类型“ResxDemo.Properties.Resources”没有名为“Chrysanthemum”的属性。
解决项目资源找不到的问题:
1.使用resgen命令生成Resources.resx文件,拷贝到Properties目录下面
2.从项目中删除ResxDemo.Properties.Resources.resources 和Resource.cs文件
3.把Resource.resx包含在项目中,双击打开,修改访问修饰符为Internal,保存一下就可以自动生成Resource.Designer.cs文件了
重新生成项目,重新打开Form1。可以看见使用项目资源的图片已经显示出来了。

这时使用本地资源的既不报错也不显示,但运行是可以显示出来的,因为现在还是使用的.resources资源文件。
解决本地资源找不到的问题:
1.使用resgen命令生成Form1.resx文件,拷贝到Form1.cs目录下面
2.从项目中删除*.Form1.resources 文件
3.从项目中包含Form1.resx文件,重新生成项目,重新打开窗体图片显示出来了。

Reflector反编译WinForm程序重建项目资源和本地资源的更多相关文章
- 恢复Reflector反编译后资源文件的办法
反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选 ...
- .NET Reflector反编译的方法
首先启动.NET Reflector,然后添加进入dll或exe.然后选择Export Source Code...,将反编译后的代码文件,生成到指定目录. 到这一步骤时,稍等一会,就能够在指定目录就 ...
- 使用Reflector反编译并提取源代码
Reflector是一个强大的.net 反编译工具,有时我们不止需要反编译源代码,更需要提取源代码. Reflector本身不自带提取源代码功能,不过可以借助插件Reflector.FileDisas ...
- Reflector 反编译 .NET文件后修复
反编译后的工程文件用VS2010打开后,在打开窗体时会出现一系列错误提示: 第一种情况: “设计器无法处理第 152 行的代码: base.AutoScaleMode = AutoScaleMode. ...
- Reflector反编译.NET文件后修复【转】
反编译后的工程文件用VS2010打开后,在打开窗体时会出现一系列错误提示: 第一种情况: “设计器无法处理第 152 行的代码: base.AutoScaleMode = AutoScaleMode. ...
- 【Android】记录反编译安卓程序步骤
主要是为了分析一个 App 里面用到的接口,以后移植 UWP 用. 1.http://jd.benow.ca/ 下载 JD-GUI. 2.https://github.com/pxb1988/dex2 ...
- Reflector反编译.NET文件后修复
反编译后的工程文件用VS2010打开后,在打开窗体时会出现一系列错误提示: 第一种情况: “设计器无法处理第 152 行的代码: base.AutoScaleMode = AutoScaleMode. ...
- 通过反编译小程序来学习前端:wxappUnpacker
小程序开发时,会有4种文件:.wxss .json .wxs .wxml. 正式上传到腾讯时,目录会被打包,使用时再发放给客户端. 这个文件包后缀是 .wxapkg.只要手机用过这个小程序,文件 ...
- vs 2019 自带 反编译 与 Reflector 反编译工具比较
都是一样的 但是要看自己写的 反编译代码 还是得去 Reflector
随机推荐
- Ubuntu 12.04安装vim和配置
问题: ubuntu默认没有安装vim,出现: jyg@ubuntu:~$ vim test.cThe program 'vim' can be found in the following pack ...
- -Xmx 和 –Xms 设置最大堆和最小堆
C:\Java\jre1.6.0\bin\javaw.exe 按照上面所说的,最后参数在eclipse.ini中可以写成这个样子: -vmargs -Xms128M -Xmx512M ...
- svn提交时强制添加注释
1,找到Repositories 文件夹 2,在Repositories 中找到对应的工程, 3,在工程下找到hooks文件夹 4.在hooks文件夹下添加 :pre-commit.bat文件;文件内 ...
- php调用一个c语言写的接口问题
用php调用一个c语言写的soap接口时,遇到一个问题:不管提交的数据正确与否,都无法请求到接口 1.用php标准的soap接口去请求 2.拼接xml数据去请求 以上两种方式都不正确 解决办法:php ...
- 如何写出优雅的Python之设置class缺省值
今天有个需求时需要为某个类设置缺省值 最开始的代码如下: Class myClass def __init__(self,datalen=None,times=None): if datalen == ...
- ReentrantReadWriteLock类和ReentrantLock类的区别
Java.util.concurrent.locks包定义了两个锁类,ReentrantLock和ReentrantReadWriteLock类. 当有很多线程都从某个数据结构中读取数据而很少有线程对 ...
- 一个用php写的人民币数字转人民币大写的函数
function num2rmb ($num) { $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; ...
- php 全角半角转换
<?phpheader("Content-type: text/html; charset=utf-8");// 第一个参数:传入要转换的字符串// 第二个参数:取0,半角转 ...
- Python3基础 sum,range 计算1到100的和
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- StudyFoxCMS-8
1.swiper插件使用 首页图片滚动插件. (1)下载:bower install swiper (2)使用:参考中文官网(http://www.swiper.com.cn/usage/index. ...