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
随机推荐
- [原创]java WEB学习笔记96:Spring学习---Spring简介及HelloWord
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- python日志模块
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系 统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...
- 【转】PowerShell入门(七):管道——在命令行上编程
转至:http://www.cnblogs.com/ceachy/archive/2013/02/22/PowerShell_Pipeline.html 管道对于Shell来说是个化腐朽为神奇的东西, ...
- javaWeb 使用 filter 处理 html 标签问题
1.web.xml代码 <filter> <filter-name>HtmlFilter</filter-name> <filter-class>de. ...
- Shell.xaml
<Window x:Class="HelloWorld.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/ ...
- python(六)内置函数
一.函数知识补充 函数不设置值,默认返回None:函数中参数都是按引用传递,函数里修改了参数,原始参数也会修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...
- selenium高亮显示操作步骤方法
package com.allin.pc;import java.util.List;import org.openqa.selenium.WebElement;import org.openqa.s ...
- [issue] dyld`dyld_fatal_error: -> 0x120015088 <+0>: brk #0x3
iOS "dyld`dyld_fatal_error: -> 0x12000d088 <+0>: brk #0x3"错误 根据上面的博客里的方法二 尝试解决方法二 ...
- [转](四)unity4.6Ugui中文教程文档-------概要-UGUI Visual Components
转自孙广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual ...
- python高性能代码之多线程优化
以常见的端口扫描器为实例 端口扫描器的原理很简单,操作socket来判断连接状态确定主机端口的开放情况. import socket def scan(port): s = socket.socket ...