前往Shuct.Net首页

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

关于反编译的搜索

Reflector反编译winform心得(转) - buliedian - ITeye技术网站 首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 招聘 搜索 您还未登录 ! 登录 注册 buliedian 博客 微博 相册 收藏 留言 关于我 buliedian Reflector反编译winform心得(转) WinForm正则表达式Windows.net嵌入式 相关情况介绍: .NET Reflector 一款优秀的反编译工具:http://shy-feng.blog007.com/archives/2008916173215.aspx 以下文字来自 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 分享到: Powerbuilder混淆器改成正式版和中文界面 | 14个RSS、CSS和HTML验证工具 2010-09-11 20:09 浏览 811 评论(1) 相关推荐 评论 1 楼 pengyinjiangxi 2011-10-19 要是早看到你的微博,我就不用改的那么辛苦了 发表评论 您还没有登录,请您登录后再发表评论 buliedian 浏览: 178299 次 性别: 来自: 北京 最近访客 更多访客>> dylinshi126 kku mytools 伊然922 文章分类 全部博客 (1447) 社区版块 我的资讯 (0) 我的论坛 (0) 我的问答 (0) 存档分类 2012-02 (2) 2012-01 (4) 2011-12 (2) 更多存档... 最新评论 放纵思想: 写的不怎么样。 通用性太差。 VC(实现自己的ADO类) iefreer: 转载应标注原文链接: http://blog.csdn.net ... zend server ce 启动错误: internal error hcmfys: 从新,神马 ,南方基地,好熟悉的名字,加油,好姑娘! 从程序员变为项目经理的背后 thiink: 非常想知道如果是自己高一些小的东西,那么可能技术含量不是很高, ... 2011年项目回顾与总结分析 wskiwwwx: 你怎么盗用我的文章啊,两个转载都没标注????http://b ... 自己写的平面柱状图,有个小bug 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 &copy; 2003-2014 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ]